summaryrefslogtreecommitdiffstats
path: root/src/core/qchangearbiter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/qchangearbiter.cpp')
-rw-r--r--src/core/qchangearbiter.cpp15
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)