diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2016-04-10 13:01:02 +0100 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-04-12 12:46:17 +0000 |
commit | 1226b25ff68d3e8516207a02816daa2ce7155098 (patch) | |
tree | f7041ede9dafeab5cfa274abbe3f3d8e47806fb6 /src/core/aspects | |
parent | c822a614a7f42582476f614a91cc5b08bb712ab7 (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.cpp | 19 | ||||
-rw-r--r-- | src/core/aspects/qaspectengine_p.h | 1 |
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; }; |