From 57c28f461a066c03ef8ae3f823c040fa91876fb8 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Mon, 4 Nov 2019 14:21:18 +0100 Subject: Fix touch being ignored when down and motion are in the same frame The Wayland protocol gives no guarantees about which events are part of a frame, so handle the case where we receive wl_touch.down and wl_touch.motion within the same frame. Fixes: QTBUG-79744 Change-Id: I5dd9302576d81da38e003c8e7e74da6a98def603 Reviewed-by: Paul Olav Tvete --- src/client/qwaylandinputdevice.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp index 8f3df8e4d..193ce714b 100644 --- a/src/client/qwaylandinputdevice.cpp +++ b/src/client/qwaylandinputdevice.cpp @@ -1062,7 +1062,10 @@ void QWaylandInputDevice::handleTouchPoint(int id, Qt::TouchPointState state, co tp.area.moveCenter(globalPosition); } - tp.state = state; + // If the touch point was pressed earlier this frame, we don't want to overwrite its state. + if (tp.state != Qt::TouchPointPressed) + tp.state = state; + tp.pressure = tp.state == Qt::TouchPointReleased ? 0 : 1; } -- cgit v1.2.3