diff options
Diffstat (limited to 'src/core/qchangearbiter.cpp')
-rw-r--r-- | src/core/qchangearbiter.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp index e5745b017..3672777de 100644 --- a/src/core/qchangearbiter.cpp +++ b/src/core/qchangearbiter.cpp @@ -171,12 +171,21 @@ void QChangeArbiter::removeLockingChangeQueue(QChangeArbiter::QChangeQueue *queu void QChangeArbiter::syncChanges() { - const std::lock_guard<QRecursiveMutex> locker(m_mutex);; - for (QChangeArbiter::QChangeQueue *changeQueue : qAsConst(m_changeQueues)) + const std::lock_guard<QRecursiveMutex> locker(m_mutex); + + bool hasChanges = false; + for (QChangeArbiter::QChangeQueue *changeQueue : qAsConst(m_changeQueues)) { + hasChanges |= !changeQueue->empty(); distributeQueueChanges(changeQueue); + } - for (QChangeQueue *changeQueue : qAsConst(m_lockingChangeQueues)) + for (QChangeQueue *changeQueue : qAsConst(m_lockingChangeQueues)) { + hasChanges |= !changeQueue->empty(); distributeQueueChanges(changeQueue); + } + + if (hasChanges) + emit syncedChanges(); } void QChangeArbiter::setScene(QScene *scene) |