summaryrefslogtreecommitdiffstats
path: root/src/core/qchangearbiter.cpp
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-07-23 15:00:00 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-07-25 13:37:15 +0200
commit2f2364091b2378d930e33e621de492f927b8c65c (patch)
treea060264fe8178b62f17e3686ce82a8acd07f2934 /src/core/qchangearbiter.cpp
parent483b966f0b4c321d52f76425845878999dbfd200 (diff)
QSceneObserverInterface registered to QChangeArbiter
Registration occurs in QAspectManager::registerObserver just after the aspect is initialized. QSceneObserverInterface instances are unregistered at shutdown of the QAspectManager. Change-Id: I8cbe575454b13c262885d9965f35665ab0ff17a3 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/qchangearbiter.cpp')
-rw-r--r--src/core/qchangearbiter.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp
index 975ee1412..62d3e0361 100644
--- a/src/core/qchangearbiter.cpp
+++ b/src/core/qchangearbiter.cpp
@@ -194,6 +194,18 @@ void QChangeArbiter::registerObserver(QObserverInterface *observer,
registerObserverHelper(observerList, observer, observable, changeFlags);
}
+// Called from the QAspectThread context, no need to lock
+void QChangeArbiter::registerSceneObserver(QSceneObserverInterface *observer)
+{
+ if (observer == Q_NULLPTR) {
+ qCWarning(ChangeArbiter) << Q_FUNC_INFO << "SceneObserverInterface is null";
+ return ;
+ }
+ Q_D(QChangeArbiter);
+ if (!d->m_sceneObservers.contains(observer))
+ d->m_sceneObservers << observer;
+}
+
void QChangeArbiter::registerObserverHelper(QObserverList &observerList,
QObserverInterface *observer,
QObservableInterface *observable,
@@ -238,6 +250,14 @@ void QChangeArbiter::unregisterObserver(QObserverInterface *observer, QNode *sub
}
}
+// Called from the QAspectThread context, no need to lock
+void QChangeArbiter::unregisterSceneObserver(QSceneObserverInterface *observer)
+{
+ Q_D(QChangeArbiter);
+ if (observer != Q_NULLPTR)
+ d->m_sceneObservers.removeOne(observer);
+}
+
void QChangeArbiter::sceneChangeEvent(const QSceneChangePtr &e)
{
// qCDebug(ChangeArbiter) << Q_FUNC_INFO << QThread::currentThread();