diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-14 01:00:34 +0200 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-10-14 01:00:34 +0200 |
commit | e164d61ca8263fc4b46fdd916e1ea77c7dd2b735 (patch) | |
tree | 06c50077b8baf41b756dc1aa8021c4a9ca34a9d4 /src/gui/kernel/qwindowsysteminterface.cpp | |
parent | 721a0e807881e4d00e752e3c3cf62427eb681dd2 (diff) | |
parent | 8d8140dffa9aa680a519b501fc5bdf08c91dd735 (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Change-Id: I129dd579f92cb2592a38ca043472b45cb926ae12
Diffstat (limited to 'src/gui/kernel/qwindowsysteminterface.cpp')
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 03be72ca30..5f61853a6d 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -617,6 +617,7 @@ bool QWindowSystemInterface::isTouchDeviceRegistered(const QTouchDevice *device) static int g_nextPointId = 1; // map from device-independent point id (arbitrary) to "Qt point" ids +QMutex QWindowSystemInterfacePrivate::pointIdMapMutex; typedef QMap<quint64, int> PointIdMap; Q_GLOBAL_STATIC(PointIdMap, g_pointIdMap) @@ -634,6 +635,8 @@ Q_GLOBAL_STATIC(PointIdMap, g_pointIdMap) */ static int acquireCombinedPointId(quint8 deviceId, int pointId) { + QMutexLocker locker(&QWindowSystemInterfacePrivate::pointIdMapMutex); + quint64 combinedId64 = (quint64(deviceId) << 32) + pointId; auto it = g_pointIdMap->constFind(combinedId64); int uid; @@ -693,6 +696,8 @@ QList<QTouchEvent::TouchPoint> } if (states == Qt::TouchPointReleased) { + QMutexLocker locker(&QWindowSystemInterfacePrivate::pointIdMapMutex); + // All points on deviceId have been released. // Remove all points associated with that device from g_pointIdMap. // (On other devices, some touchpoints might still be pressed. @@ -712,6 +717,7 @@ QList<QTouchEvent::TouchPoint> void QWindowSystemInterfacePrivate::clearPointIdMap() { + QMutexLocker locker(&QWindowSystemInterfacePrivate::pointIdMapMutex); g_pointIdMap->clear(); g_nextPointId = 1; } |