diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-07-23 15:00:00 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-07-25 13:37:15 +0200 |
commit | 2f2364091b2378d930e33e621de492f927b8c65c (patch) | |
tree | a060264fe8178b62f17e3686ce82a8acd07f2934 /src/core/qchangearbiter.cpp | |
parent | 483b966f0b4c321d52f76425845878999dbfd200 (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.cpp | 20 |
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(); |