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 Pick-to: 6.2 6.3 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>
This commit is contained in:
parent
199b82b5cf
commit
3047afe05f
@ -1405,7 +1405,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, QEventPoint::Released);
|
||||
|
||||
if (allTouchPointsReleased()) {
|
||||
@ -1424,8 +1424,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, QEventPoint::Updated, position);
|
||||
}
|
||||
|
||||
@ -1524,7 +1524,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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user