From 69afe4d266ffbde364913d31fbcbc00769b4b390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Fl=C3=B6ser?= Date: Wed, 2 May 2018 20:47:59 +0200 Subject: [PATCH] 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 --- plugins/platforms/drm/drm_inputeventfilter.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/platforms/drm/drm_inputeventfilter.cpp b/plugins/platforms/drm/drm_inputeventfilter.cpp index e4ef498041..e2625ca3ea 100644 --- a/plugins/platforms/drm/drm_inputeventfilter.cpp +++ b/plugins/platforms/drm/drm_inputeventfilter.cpp @@ -19,9 +19,12 @@ along with this program. If not, see . *********************************************************************/ #include "drm_inputeventfilter.h" #include "drm_backend.h" +#include "wayland_server.h" #include +#include + namespace KWin { @@ -82,10 +85,10 @@ bool DpmsInputEventFilter::touchDown(quint32 id, const QPointF &pos, quint32 tim bool DpmsInputEventFilter::touchUp(quint32 id, quint32 time) { - Q_UNUSED(time) m_touchPoints.removeAll(id); if (m_touchPoints.isEmpty() && m_doubleTapTimer.isValid() && m_secondTap) { if (m_doubleTapTimer.elapsed() < qApp->doubleClickInterval()) { + waylandServer()->seat()->setTimestamp(time); notify(); } m_doubleTapTimer.invalidate();