diff options
author | Paul Lemire <paul.lemire.ecortex@kdab.com> | 2014-11-12 07:35:57 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-11-14 17:44:21 +0100 |
commit | fa5b55ca17e233fdb5674c0652f60507af683975 (patch) | |
tree | b0ae6b6e9f735ce4cccf4b1eebbf44f70ce8c8ae /src/core/aspects | |
parent | 8bf14c405031baa650c687ffffa443ce772093e0 (diff) |
Aspects: onInitialize now takes a QVariantMap
The QAspectEngine setSurface method was replaced by a setData method which
takes a QVariantMap. This offers a way to specify different values that
different aspects may be interested in. It is the responsibility of the Aspect
subclass to check that the QVariantMap contains the necessary element when
onInitialize is called.
Change-Id: Ifcf5d2ee9e5fac7b0fe3c320c1415bcf55f1cf55
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/core/aspects')
-rw-r--r-- | src/core/aspects/qabstractaspect.h | 2 | ||||
-rw-r--r-- | src/core/aspects/qaspectengine.cpp | 6 | ||||
-rw-r--r-- | src/core/aspects/qaspectengine.h | 2 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager.cpp | 16 | ||||
-rw-r--r-- | src/core/aspects/qaspectmanager_p.h | 7 |
5 files changed, 16 insertions, 17 deletions
diff --git a/src/core/aspects/qabstractaspect.h b/src/core/aspects/qabstractaspect.h index 1538373f2..4be50b26f 100644 --- a/src/core/aspects/qabstractaspect.h +++ b/src/core/aspects/qabstractaspect.h @@ -105,7 +105,7 @@ protected: private: virtual void setRootEntity(QEntity *rootObject) = 0; - virtual void onInitialize(QSurface *surface) = 0; + virtual void onInitialize(const QVariantMap &data) = 0; virtual void onCleanup() = 0; Q_DECLARE_PRIVATE(QAbstractAspect) diff --git a/src/core/aspects/qaspectengine.cpp b/src/core/aspects/qaspectengine.cpp index a5477e9f2..80533b037 100644 --- a/src/core/aspects/qaspectengine.cpp +++ b/src/core/aspects/qaspectengine.cpp @@ -140,12 +140,12 @@ void QAspectEngine::shutdown() d->m_aspectThread->wait(); } -void QAspectEngine::setSurface(QSurface *surface) +void QAspectEngine::setData(const QVariantMap &data) { Q_D(QAspectEngine); QMetaObject::invokeMethod(d->m_aspectThread->aspectManager(), - "setSurface", - Q_ARG(QSurface *, surface)); + "setData", + Q_ARG(const QVariantMap &, data)); } /*! diff --git a/src/core/aspects/qaspectengine.h b/src/core/aspects/qaspectengine.h index 49d984ef1..2f2130d3f 100644 --- a/src/core/aspects/qaspectengine.h +++ b/src/core/aspects/qaspectengine.h @@ -70,7 +70,7 @@ public: void setRootEntity(QEntity *root); QSharedPointer<QEntity> rootEntity() const; - void setSurface(QSurface *surface); + void setData(const QVariantMap &data); void registerAspect(QAbstractAspect *aspect); protected: diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp index cc3a819a5..c32bf6301 100644 --- a/src/core/aspects/qaspectmanager.cpp +++ b/src/core/aspects/qaspectmanager.cpp @@ -64,7 +64,6 @@ namespace Qt3D { QAspectManager::QAspectManager(QObject *parent) : QObject(parent) , m_root(Q_NULLPTR) - , m_surface(Q_NULLPTR) , m_scheduler(new QScheduler(this)) , m_jobManager(new QAspectJobManager(this)) , m_changeArbiter(new QChangeArbiter(this)) @@ -124,13 +123,13 @@ void QAspectManager::setRootEntity(Qt3D::QEntity *root) } } -// Called before register aspect -void QAspectManager::setSurface(QSurface *surface) +// Should be called after aspects are registered +void QAspectManager::setData(const QVariantMap &data) { qCDebug(Aspects) << Q_FUNC_INFO; - m_surface = surface; + m_data = data; Q_FOREACH (QAbstractAspect *aspect, m_aspects) - aspect->onInitialize(m_surface); + aspect->onInitialize(m_data); } /*! @@ -146,8 +145,7 @@ void QAspectManager::registerAspect(QAbstractAspect *aspect) QAbstractAspectPrivate::get(aspect)->m_arbiter = m_changeArbiter; // Register sceneObserver with the QChangeArbiter m_changeArbiter->registerSceneObserver(aspect); - if (m_surface != Q_NULLPTR) - aspect->onInitialize(m_surface); + aspect->onInitialize(m_data); } else { qCWarning(Aspects) << "Failed to register aspect"; @@ -155,9 +153,9 @@ void QAspectManager::registerAspect(QAbstractAspect *aspect) qCDebug(Aspects) << "Completed registering aspect"; } -QSurface *QAspectManager::surface() const +QVariantMap QAspectManager::data() const { - return m_surface; + return m_data; } void QAspectManager::exec() diff --git a/src/core/aspects/qaspectmanager_p.h b/src/core/aspects/qaspectmanager_p.h index 999c5fde3..47bd5c2fc 100644 --- a/src/core/aspects/qaspectmanager_p.h +++ b/src/core/aspects/qaspectmanager_p.h @@ -44,6 +44,7 @@ #include <QObject> #include <QList> +#include <QVariant> #include <Qt3DCore/qt3dcore_global.h> QT_BEGIN_NAMESPACE @@ -73,9 +74,9 @@ public Q_SLOTS: void shutdown(); void setRootEntity(Qt3D::QEntity *root); - void setSurface(QSurface *surface); + void setData(const QVariantMap &data); void registerAspect(Qt3D::QAbstractAspect *aspect); - QSurface *surface() const; + QVariantMap data() const; void exec(); void quit(); @@ -87,7 +88,7 @@ public Q_SLOTS: private: QList<QAbstractAspect *> m_aspects; QEntity *m_root; - QSurface *m_surface; + QVariantMap m_data; QScheduler *m_scheduler; QAbstractAspectJobManager *m_jobManager; QChangeArbiter *m_changeArbiter; |