summaryrefslogtreecommitdiffstats
path: root/src/core/aspects
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-10 13:01:02 +0100
committerPaul Lemire <paul.lemire@kdab.com>2016-04-12 12:46:17 +0000
commit1226b25ff68d3e8516207a02816daa2ce7155098 (patch)
treef7041ede9dafeab5cfa274abbe3f3d8e47806fb6 /src/core/aspects
parentc822a614a7f42582476f614a91cc5b08bb712ab7 (diff)
Add QNodeCreatedChangeGenerator helper
This can then be used by the QAspectEngine to create creation changes at startup and by QNodePrivate to generate creation changes for dynamic objects at runtime. Change-Id: Idf13fc249de7238a8c5803634a825bd86bc3c52a Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core/aspects')
-rw-r--r--src/core/aspects/qaspectengine.cpp19
-rw-r--r--src/core/aspects/qaspectengine_p.h1
2 files changed, 3 insertions, 17 deletions
diff --git a/src/core/aspects/qaspectengine.cpp b/src/core/aspects/qaspectengine.cpp
index 6a33c4536..769973632 100644
--- a/src/core/aspects/qaspectengine.cpp
+++ b/src/core/aspects/qaspectengine.cpp
@@ -56,6 +56,7 @@
#include "qentity.h"
#include "qcomponent.h"
#include <Qt3DCore/private/qeventfilterservice_p.h>
+#include <Qt3DCore/private/qnodecreatedchangegenerator_p.h>
#include <Qt3DCore/private/qservicelocator_p.h>
QT_BEGIN_NAMESPACE
@@ -100,22 +101,8 @@ void QAspectEnginePrivate::initEntity(QEntity *entity)
void QAspectEnginePrivate::generateCreationChanges(QNode *root)
{
- m_creationChanges.clear();
- QNodeVisitor creationVisitor;
- creationVisitor.traverse(root, this, &QAspectEnginePrivate::createCreationChange);
-}
-
-void QAspectEnginePrivate::createCreationChange(QNode *node)
-{
- const auto creationChange = node->createNodeCreationChange();
- m_creationChanges.push_back(creationChange);
-
- // Store the metaobject of the node in the QNode so that we have it available
- // to us during destruction in the QNode destructor. This allows us to send
- // the QNodeId and the metaobject as typeinfo to the backend aspects so they
- // in turn can find the correct QBackendNodeMapper object to handle the destruction
- // of the corresponding backend nodes.
- QNodePrivate::get(node)->m_typeInfo = const_cast<QMetaObject*>(creationChange->metaObject());
+ const QNodeCreatedChangeGenerator generator(root);
+ m_creationChanges = generator.creationChanges();
}
QAspectEngine::QAspectEngine(QObject *parent)
diff --git a/src/core/aspects/qaspectengine_p.h b/src/core/aspects/qaspectengine_p.h
index 7a46d5cc2..b2b88d266 100644
--- a/src/core/aspects/qaspectengine_p.h
+++ b/src/core/aspects/qaspectengine_p.h
@@ -90,7 +90,6 @@ public:
void initEntity(QEntity *entity);
void generateCreationChanges(QNode *rootNode);
- void createCreationChange(QNode *node); // visitor function
QVector<QNodeCreatedChangeBasePtr> m_creationChanges;
};