summaryrefslogtreecommitdiffstats
path: root/src/core/aspects
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire.ecortex@kdab.com>2014-11-12 07:35:57 +0100
committerSean Harmer <sean.harmer@kdab.com>2014-11-14 17:44:21 +0100
commitfa5b55ca17e233fdb5674c0652f60507af683975 (patch)
treeb0ae6b6e9f735ce4cccf4b1eebbf44f70ce8c8ae /src/core/aspects
parent8bf14c405031baa650c687ffffa443ce772093e0 (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.h2
-rw-r--r--src/core/aspects/qaspectengine.cpp6
-rw-r--r--src/core/aspects/qaspectengine.h2
-rw-r--r--src/core/aspects/qaspectmanager.cpp16
-rw-r--r--src/core/aspects/qaspectmanager_p.h7
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;