summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android/qandroideventdispatcher.cpp
diff options
context:
space:
mode:
authorVyacheslav Koscheev <v.koscheev@2gis.ru>2017-01-26 14:07:48 +0700
committerVyacheslav Koscheev <vok1980@gmail.com>2017-02-07 08:40:40 +0000
commitd0b8356e7efcb546bf8838b01b94840e4c0d3ab3 (patch)
tree70026eef738fa508f41a3b8ab0c2a10fee13f98f /src/plugins/platforms/android/qandroideventdispatcher.cpp
parent2294d1fb1a778b13d2514e7bb92e80b9cc4c6356 (diff)
Android: Fix data race in QAndroidEventDispatcherStopper
Change-Id: If5f8406d7af2d91e267a0ba380e73287feabac9f Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Diffstat (limited to 'src/plugins/platforms/android/qandroideventdispatcher.cpp')
-rw-r--r--src/plugins/platforms/android/qandroideventdispatcher.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/plugins/platforms/android/qandroideventdispatcher.cpp b/src/plugins/platforms/android/qandroideventdispatcher.cpp
index 104e905b8f..e12551283f 100644
--- a/src/plugins/platforms/android/qandroideventdispatcher.cpp
+++ b/src/plugins/platforms/android/qandroideventdispatcher.cpp
@@ -108,10 +108,9 @@ QAndroidEventDispatcherStopper *QAndroidEventDispatcherStopper::instance()
void QAndroidEventDispatcherStopper::startAll()
{
QMutexLocker lock(&m_mutex);
- if (started)
+ if (!m_started.testAndSetOrdered(0, 1))
return;
- started = true;
for (QAndroidEventDispatcher *d : qAsConst(m_dispatchers))
d->start();
}
@@ -119,10 +118,9 @@ void QAndroidEventDispatcherStopper::startAll()
void QAndroidEventDispatcherStopper::stopAll()
{
QMutexLocker lock(&m_mutex);
- if (!started)
+ if (!m_started.testAndSetOrdered(1, 0))
return;
- started = false;
for (QAndroidEventDispatcher *d : qAsConst(m_dispatchers))
d->stop();
}