diff options
author | Liang Qi <liang.qi@qt.io> | 2017-10-23 12:09:30 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-10-24 11:13:09 +0200 |
commit | 15dd1b7883f5dbe66266aeb588381f85f3532ab9 (patch) | |
tree | 1fa8caa8ec0f38aef39bcf920e3d5c7efeae5cb9 /src/qml/qml/ftw/qqmlthread.cpp | |
parent | f82c4de515223574bcc510de0d993426b22bccbe (diff) | |
parent | ebceda0cad6d86f6d6fe5efbf85a3b06fb4222b0 (diff) |
Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts:
src/qml/qml/qqmlimport.cpp
src/qml/qml/qqmlimport_p.h
src/qml/qml/qqmltypenamecache.cpp
Done-with: Ulf Hermann<ulf.hermann@qt.io>
Change-Id: I41ba7a592b2659ddf53da6952ea3b456a7bba319
Diffstat (limited to 'src/qml/qml/ftw/qqmlthread.cpp')
-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(); } |