diff options
author | Mika Salmela <mika.salmela@qt.io> | 2017-01-10 12:10:39 +0200 |
---|---|---|
committer | Mika Salmela <mika.salmela@qt.io> | 2017-01-12 10:18:35 +0000 |
commit | f03ed59a582d2bf689c866f195224bf659a7bc47 (patch) | |
tree | af4b81dabfa457c344703a05b620f088c9000067 /src/datavisualizationqml2/abstractdeclarative.cpp | |
parent | 54910f8cf827d6f9474de9f6f88b3a158a058c56 (diff) |
Add mutex guards for AbstractDeclarative::updateWindowParameters
Adds a mutex to guard that pointer to controller is not deleted while
doing updateWindowParameters. The render thread doesn't have control to
the node mutex, so that won't apply since it may be deleted while requesting
a mutex.
Change-Id: I8897954415c1bd7ab61ef99b420c9ac2aaa89411
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/datavisualizationqml2/abstractdeclarative.cpp')
-rw-r--r-- | src/datavisualizationqml2/abstractdeclarative.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp index 220a1a0c..7568fd30 100644 --- a/src/datavisualizationqml2/abstractdeclarative.cpp +++ b/src/datavisualizationqml2/abstractdeclarative.cpp @@ -77,6 +77,10 @@ AbstractDeclarative::~AbstractDeclarative() disconnect(this, 0, this, 0); checkWindowList(0); + // Make sure not deleting locked mutex + QMutexLocker locker(&m_mutex); + locker.unlock(); + m_nodeMutex.clear(); } @@ -518,6 +522,8 @@ void AbstractDeclarative::itemChange(ItemChange change, const ItemChangeData & v void AbstractDeclarative::updateWindowParameters() { + const QMutexLocker locker(&m_mutex); + // Update the device pixel ratio, window size and bounding box QQuickWindow *win = window(); if (win && !m_controller.isNull()) { |