diff options
author | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2019-08-19 13:46:08 +0200 |
---|---|---|
committer | Johan Helsing <johan.helsing@qt.io> | 2019-08-29 13:06:11 +0000 |
commit | 2e9c90aaefdfe5f1e9b90159c5e6981230627055 (patch) | |
tree | 7b3da810d1d7bd525b21441b627f87c3abd0f220 /src/client/qwaylandinputdevice_p.h | |
parent | 1cce394099bd83261a0fe3bb73acd5c4bd8a749a (diff) |
Client: Refactor touch handling and fix various bugs
Rename mTouchPoints to mPendingTouchPoints, to clarify that they're the
accumulated state so far, which will be applied with the wl_touch.frame
event. QWaylandInputDevice::Touch::mPrevTouchPoints is no longer needed
and has been removed.
Fixes the following issues with the old approach:
- touchPointsReleased() only checked mTouchPoints, which was cleared on
touch_frame and populated again on touch_motion and touch_down, which
meant that it could return true even though there were still touch
points left. Leading to the workaround for missing wl_touch.frame events
on Weston being triggered to often.
- Touch focus was cleared on any wl_touch.up event, not just the last
one.
- The order of the touch events was not stable and relied on the order
of the events (QTBUG-77014).
Fixes: QTBUG-77014
Change-Id: Ic3ecdc87e77b0e0276afefd127ad2b965142cbd4
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/client/qwaylandinputdevice_p.h')
-rw-r--r-- | src/client/qwaylandinputdevice_p.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/client/qwaylandinputdevice_p.h b/src/client/qwaylandinputdevice_p.h index 7aa86539b..d9bae9836 100644 --- a/src/client/qwaylandinputdevice_p.h +++ b/src/client/qwaylandinputdevice_p.h @@ -304,8 +304,7 @@ public: QWaylandInputDevice *mParent = nullptr; QPointer<QWaylandWindow> mFocus; - QList<QWindowSystemInterface::TouchPoint> mTouchPoints; - QList<QWindowSystemInterface::TouchPoint> mPrevTouchPoints; + QList<QWindowSystemInterface::TouchPoint> mPendingTouchPoints; }; class QWaylandPointerEvent |