diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-07-29 19:01:09 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-08-14 15:17:28 +0200 |
commit | 33a8bcde37006fbe86afe4c1a396434728d91284 (patch) | |
tree | f4f3e7a68c6630d96417a4b15aab9a58c4b24d6d /src/core/qchangearbiter.cpp | |
parent | 1db5550224e29419c30b1aa17c8120a649748d5b (diff) |
Allow observers + scene observers to monitor NodeCreated/NodeDeleted
Change-Id: Ie8e2d662d7b2bd7ef4335bdb7fcc3eb54572448a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/qchangearbiter.cpp')
-rw-r--r-- | src/core/qchangearbiter.cpp | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp index 9a5b808aa..069043316 100644 --- a/src/core/qchangearbiter.cpp +++ b/src/core/qchangearbiter.cpp @@ -111,53 +111,42 @@ void QChangeArbiter::distributeQueueChanges(ChangeQueue *changeQueue) if (change.isNull()) continue; - switch (change->type()) { - - case NodeCreated: { + if (change->type() == NodeCreated) { Q_FOREACH (QSceneObserverInterface *observer, d->m_sceneObservers) observer->sceneNodeAdded(change); - break; } - - case NodeDeleted: - case NodeAboutToBeDeleted: { + else if (change->type() == NodeAboutToBeDeleted || change->type() == NodeDeleted) { Q_FOREACH (QSceneObserverInterface *observer, d->m_sceneObservers) observer->sceneNodeRemoved(change); - break; } - default : { - switch (change->observableType()) { - - case QSceneChange::Observable: { - QObservableInterface *subject = change->subject().m_observable; - if (d->m_aspectObservations.contains(subject)) { - QObserverList &observers = d->m_aspectObservations[subject]; - Q_FOREACH (const QObserverPair &observer, observers) { - if ((change->type() & observer.first)) - observer.second->sceneChangeEvent(change); - } + switch (change->observableType()) { + + case QSceneChange::Observable: { + QObservableInterface *subject = change->subject().m_observable; + if (d->m_aspectObservations.contains(subject)) { + QObserverList &observers = d->m_aspectObservations[subject]; + Q_FOREACH (const QObserverPair &observer, observers) { + if ((change->type() & observer.first)) + observer.second->sceneChangeEvent(change); } - break; } + break; + } - case QSceneChange::Node: { - QNode *subject = change->subject().m_node; - if (d->m_nodeObservations.contains(subject->uuid())) { - QObserverList &observers = d->m_nodeObservations[subject->uuid()]; - Q_FOREACH (const QObserverPair&observer, observers) { - if ((change->type() & observer.first)) - observer.second->sceneChangeEvent(change); - } + case QSceneChange::Node: { + QNode *subject = change->subject().m_node; + if (d->m_nodeObservations.contains(subject->uuid())) { + QObserverList &observers = d->m_nodeObservations[subject->uuid()]; + Q_FOREACH (const QObserverPair&observer, observers) { + if ((change->type() & observer.first)) + observer.second->sceneChangeEvent(change); } - break; } - - } // observableType switch break; - } // default + } - } // change type switch + } // observableType switch } } |