diff options
author | Liang Qi <liang.qi@qt.io> | 2017-11-06 18:05:00 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-11-06 18:05:07 +0100 |
commit | 692ff260851575171be6751a7bdf34a744c2ed9d (patch) | |
tree | 67c2ee80fb6a477f731ebc1898a5dfd43c878d2d /src/qml/qml/ftw | |
parent | 8740f35e69dad301eeaa2fc4b74ecab661cdc0c4 (diff) | |
parent | 5cb76fb3704947cfc4d575695b137460ecc8bbd9 (diff) |
Merge remote-tracking branch 'origin/5.10' into dev
Change-Id: I1ed923d72566af663555898c3ec708191eef8ae9
Diffstat (limited to 'src/qml/qml/ftw')
-rw-r--r-- | src/qml/qml/ftw/qqmlthread.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/qml/qml/ftw/qqmlthread.cpp b/src/qml/qml/ftw/qqmlthread.cpp index ffa6e29290..cae7088840 100644 --- a/src/qml/qml/ftw/qqmlthread.cpp +++ b/src/qml/qml/ftw/qqmlthread.cpp @@ -233,20 +233,27 @@ void QQmlThread::shutdown() { d->lock(); Q_ASSERT(!d->m_shutdown); - d->m_shutdown = true; - if (d->threadList.isEmpty() && d->m_threadProcessing == false) { - if (QCoreApplication::closingDown()) { - d->quit(); + + for (;;) { + if (d->mainSync || !d->mainList.isEmpty()) { d->unlock(); - d->QThread::wait(); - return; + d->mainEvent(); + d->lock(); + } else if (!d->threadList.isEmpty()) { + d->wait(); } else { - d->triggerThreadEvent(); + break; } - } else if (d->mainSync) { - d->wakeOne(); } - d->wait(); + + d->m_shutdown = true; + if (QCoreApplication::closingDown()) { + d->quit(); + } else { + d->triggerThreadEvent(); + d->wait(); + } + d->unlock(); d->QThread::wait(); } |