From 7ce31f7f65f8d79c1f8763eb75b3ea238b727654 Mon Sep 17 00:00:00 2001 From: Seokha Ko Date: Mon, 24 Jan 2022 15:48:58 +0900 Subject: Fix wayland touch event to use time stamp from wayland compositor Touch events may be ignored if we set time stamp in handleTouchEvent() when handling touch events queued in wayland socket in main thread. So use time stamp from wayland compositor. Task-number: QTBUG-100150 Change-Id: I14fd3791b4d29177c71662d1cf26c0eed0abb767 Reviewed-by: Shawn Rutledge Reviewed-by: Seokha Ko Reviewed-by: Eskil Abrahamsen Blomfeldt (cherry picked from commit 2419064c3532e2efd3bcf2f23c9c690b0a0fdd00) --- src/client/qwaylandinputdevice.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp index 7fad67cad..51c64957b 100644 --- a/src/client/qwaylandinputdevice.cpp +++ b/src/client/qwaylandinputdevice.cpp @@ -1364,7 +1364,7 @@ void QWaylandInputDevice::Touch::touch_down(uint32_t serial, void QWaylandInputDevice::Touch::touch_up(uint32_t serial, uint32_t time, int32_t id) { Q_UNUSED(serial); - Q_UNUSED(time); + mParent->mTime = time; mParent->handleTouchPoint(id, Qt::TouchPointReleased); if (allTouchPointsReleased()) { @@ -1383,8 +1383,8 @@ void QWaylandInputDevice::Touch::touch_up(uint32_t serial, uint32_t time, int32_ void QWaylandInputDevice::Touch::touch_motion(uint32_t time, int32_t id, wl_fixed_t x, wl_fixed_t y) { - Q_UNUSED(time); QPointF position(wl_fixed_to_double(x), wl_fixed_to_double(y)); + mParent->mTime = time; mParent->handleTouchPoint(id, Qt::TouchPointMoved, position); } @@ -1483,7 +1483,7 @@ void QWaylandInputDevice::Touch::touch_frame() return; } - QWindowSystemInterface::handleTouchEvent(window, mParent->mTouchDevice, mPendingTouchPoints, mParent->modifiers()); + QWindowSystemInterface::handleTouchEvent(window, mParent->mTime, mParent->mTouchDevice, mPendingTouchPoints, mParent->modifiers()); // Prepare state for next frame const auto prevTouchPoints = mPendingTouchPoints; -- cgit v1.2.3