summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeokha Ko <seokha.ko@qt.io>2022-01-24 15:48:58 +0900
committerShawn Rutledge <shawn.rutledge@qt.io>2022-01-27 12:07:54 +0000
commit7ce31f7f65f8d79c1f8763eb75b3ea238b727654 (patch)
treec87a97e1a059f594b65914b57fd77a6a59ca70d6
parentcf44bcd9ff11e77a0979ded91848bf0f9f2d5832 (diff)
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.cpp6
1 files 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;