summaryrefslogtreecommitdiffstats
path: root/src/core/aspects/qaspectmanager_p.h
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-05-16 18:55:56 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-05-20 18:18:15 +0000
commitb6abf3d5104dc573f6df049580f77d278a7c30d0 (patch)
tree918e50c206d7bb0ef543317eb9a32dbe0edffd39 /src/core/aspects/qaspectmanager_p.h
parent701764ed4835d6ca9fd7c06f0ae824bea9bfde51 (diff)
Allow the backend chance to process any final changes during shutdown
The QAspectEngine now flushes any pending changes batched up before telling the aspect manager to exit the simulation loop. Furthermore, the call to QAspectManager::exitSimulationLoop() now waits until the aspect thread has completely finished the simulation loop and has called onEngineShutdown() on each of the aspects. This is important to ensure that the main thread doesn't call QAspectEngine::shutdown() too early as this deletes the change queue which contains the final changes sent from the main thread during shutdown. For some reason the backend is unable to find which QBackendNodeMapper corresponds to each destruction change. Will investigate that next. Task-number: QTBUG-42353 Change-Id: Iec4d6a57a163effefd5b60249bf97c76ed187413 Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Diffstat (limited to 'src/core/aspects/qaspectmanager_p.h')
-rw-r--r--src/core/aspects/qaspectmanager_p.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/core/aspects/qaspectmanager_p.h b/src/core/aspects/qaspectmanager_p.h
index 5be415533..7f941b2bf 100644
--- a/src/core/aspects/qaspectmanager_p.h
+++ b/src/core/aspects/qaspectmanager_p.h
@@ -112,6 +112,7 @@ private:
QAtomicInt m_runSimulationLoop;
QAtomicInt m_runMainLoop;
QScopedPointer<QServiceLocator> m_serviceLocator;
+ QSemaphore m_waitForEndOfSimulationLoop;
QSemaphore m_waitForEndOfExecLoop;
QSemaphore m_waitForQuit;
};