diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-17 15:34:04 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-09-30 10:21:43 +0200 |
commit | 1462bf3e8f896cf2ef8b30a952769fa02acb253c (patch) | |
tree | 8101ec8a2bbcd09f47ec7e8c1ea8edf0e9469e7e /src/core/qchangearbiter.cpp | |
parent | b3c7fd36830ef71e336a97fc5e69864f29cfc628 (diff) |
QChangeArbiter/QScene refactoring
Added nodeIfFromObservable method in QSceneInterface/QScene.
Needed when the QChangeArbiter needs to find the QNode target from an
Observable.
QChangeArbiter/QPostman is passed a QObserverInterface, makes it easier to
unit test.
QPostMan sends change to QNode::sceneChangeEvent. This method should be
overloaded by subclasses of QNode.
Change-Id: If85fcb034b3fcdace82e63149ca7684d9d888d1c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/qchangearbiter.cpp')
-rw-r--r-- | src/core/qchangearbiter.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp index 6e663d65a..0e858c847 100644 --- a/src/core/qchangearbiter.cpp +++ b/src/core/qchangearbiter.cpp @@ -45,6 +45,7 @@ #include "corelogging.h" #include "qsceneobserverinterface.h" +#include "qsceneinterface.h" #include <QMutexLocker> #include <QReadLocker> #include <QThread> @@ -145,7 +146,7 @@ void QChangeArbiter::distributeQueueChanges(ChangeQueue *changeQueue) case QSceneChange::Observable: { QObservableInterface *subject = change->subject().m_observable; - QUuid nodeId = d->m_observableToNodeId.value(subject); + QUuid nodeId = d->m_scene->nodeIdFromObservable(subject); if (d->m_nodeObservations.contains(nodeId)) { QObserverList &observers = d->m_nodeObservations[nodeId]; Q_FOREACH (const QObserverPair&observer, observers) { @@ -213,7 +214,7 @@ void QChangeArbiter::setScene(QSceneInterface *scene) d->m_scene = scene; } -QPostman *QChangeArbiter::postman() const +QObserverInterface *QChangeArbiter::postman() const { Q_D(const QChangeArbiter); return d->m_postman; @@ -289,7 +290,7 @@ void QChangeArbiter::sceneChangeEventWithLock(const QSceneChangePtr &e) // Either we have the postman or we could make the QChangeArbiter agnostic to the postman // but that would require adding it to every QObserverList in m_aspectObservations. -void QChangeArbiter::setPostman(QPostman *postman) +void QChangeArbiter::setPostman(QObserverInterface *postman) { Q_D(QChangeArbiter); if (d->m_postman != postman) { |