summaryrefslogtreecommitdiffstats
path: root/src/core/qchangearbiter.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-17 15:34:04 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-09-30 10:21:43 +0200
commit1462bf3e8f896cf2ef8b30a952769fa02acb253c (patch)
tree8101ec8a2bbcd09f47ec7e8c1ea8edf0e9469e7e /src/core/qchangearbiter.cpp
parentb3c7fd36830ef71e336a97fc5e69864f29cfc628 (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.cpp7
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) {