diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/aspects/qaspectmanager.cpp | 4 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager_p.h | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp index 3c7816081..80faef768 100644 --- a/src/core/aspects/qaspectmanager.cpp +++ b/src/core/aspects/qaspectmanager.cpp @@ -68,6 +68,7 @@ QAspectManager::QAspectManager(QObject *parent) , m_changeArbiter(new QChangeArbiter(this)) , m_serviceLocator(new QServiceLocator()) , m_waitForEndOfExecLoop(0) + , m_waitForQuit(0) { qRegisterMetaType<QSurface *>("QSurface*"); m_runMainLoop.fetchAndStoreOrdered(0); @@ -227,6 +228,7 @@ void QAspectManager::exec() qCDebug(Aspects) << Q_FUNC_INFO << "Exiting event loop"; m_waitForEndOfExecLoop.release(1); + m_waitForQuit.acquire(1); } void QAspectManager::quit() @@ -244,6 +246,8 @@ void QAspectManager::quit() // We need to wait for the QAspectManager exec loop to terminate m_waitForEndOfExecLoop.acquire(1); + m_waitForQuit.release(1); + qCDebug(Aspects) << Q_FUNC_INFO << "Exited event loop"; } diff --git a/src/core/aspects/qaspectmanager_p.h b/src/core/aspects/qaspectmanager_p.h index 9224a90bf..88ceceb29 100644 --- a/src/core/aspects/qaspectmanager_p.h +++ b/src/core/aspects/qaspectmanager_p.h @@ -107,6 +107,7 @@ private: QAtomicInt m_terminated; QScopedPointer<QServiceLocator> m_serviceLocator; QSemaphore m_waitForEndOfExecLoop; + QSemaphore m_waitForQuit; }; } // namespace Qt3DCore |