Update seat's timestamp after waking up screen through double tap
Summary: The drm platform has a special handling for touch events while the screen is in dpms. All touch events are filtered out, but a double tap wakes up the screen. Due to the filtering out of the events the idle timers were not reset. So if you only double tapped, the screen turned on, but not off again. This change updates the timestamp after double tap, so that the idle timers are restarted. All other events are still filtered out, to not have "fake" events (e.g. smart phone in pocket) wake up the device. BUG: 392754 FIXED-IN: 5.12.6 Test Plan: only compile tested Reviewers: #kwin, #plasma Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D12668
This commit is contained in:
parent
f28d44e5b2
commit
69afe4d266
1 changed files with 4 additions and 1 deletions
|
@ -19,9 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
#include "drm_inputeventfilter.h"
|
#include "drm_inputeventfilter.h"
|
||||||
#include "drm_backend.h"
|
#include "drm_backend.h"
|
||||||
|
#include "wayland_server.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
|
||||||
|
#include <KWayland/Server/seat_interface.h>
|
||||||
|
|
||||||
namespace KWin
|
namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -82,10 +85,10 @@ bool DpmsInputEventFilter::touchDown(quint32 id, const QPointF &pos, quint32 tim
|
||||||
|
|
||||||
bool DpmsInputEventFilter::touchUp(quint32 id, quint32 time)
|
bool DpmsInputEventFilter::touchUp(quint32 id, quint32 time)
|
||||||
{
|
{
|
||||||
Q_UNUSED(time)
|
|
||||||
m_touchPoints.removeAll(id);
|
m_touchPoints.removeAll(id);
|
||||||
if (m_touchPoints.isEmpty() && m_doubleTapTimer.isValid() && m_secondTap) {
|
if (m_touchPoints.isEmpty() && m_doubleTapTimer.isValid() && m_secondTap) {
|
||||||
if (m_doubleTapTimer.elapsed() < qApp->doubleClickInterval()) {
|
if (m_doubleTapTimer.elapsed() < qApp->doubleClickInterval()) {
|
||||||
|
waylandServer()->seat()->setTimestamp(time);
|
||||||
notify();
|
notify();
|
||||||
}
|
}
|
||||||
m_doubleTapTimer.invalidate();
|
m_doubleTapTimer.invalidate();
|
||||||
|
|
Loading…
Reference in a new issue