diff options
author | Seokha Ko <seokha.ko@qt.io> | 2022-01-24 15:48:58 +0900 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2022-01-27 12:07:54 +0000 |
commit | 7ce31f7f65f8d79c1f8763eb75b3ea238b727654 (patch) | |
tree | c87a97e1a059f594b65914b57fd77a6a59ca70d6 | |
parent | cf44bcd9ff11e77a0979ded91848bf0f9f2d5832 (diff) | |
download | qtwayland-7ce31f7f65f8d79c1f8763eb75b3ea238b727654.tar.gz |
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 <shawn.rutledge@qt.io>
Reviewed-by: Seokha Ko <seokha.ko@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit 2419064c3532e2efd3bcf2f23c9c690b0a0fdd00)
-rw-r--r-- | src/client/qwaylandinputdevice.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp index 7fad67ca..51c64957 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; |