summaryrefslogtreecommitdiffstats
path: root/src/core/aspects/qaspectengine.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-03-13 17:11:34 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-03-22 10:45:25 +0000
commit525b7bcf045c22117fb2eed49c48fdbfb445d26d (patch)
tree247c19b2db855293758e13f8765a0f36d2139548 /src/core/aspects/qaspectengine.cpp
parent7e47ff62826b60983327adf38c22efac32862906 (diff)
Generate a vector of QNodeCreatedChanges at startup
First step towards using these at application startup. Task-number: QTBUG-51835 Change-Id: If0ee58c8ba859d00ace17bd95972bee285d3e1d0 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/core/aspects/qaspectengine.cpp')
-rw-r--r--src/core/aspects/qaspectengine.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/core/aspects/qaspectengine.cpp b/src/core/aspects/qaspectengine.cpp
index 8b7c4a667..af6798407 100644
--- a/src/core/aspects/qaspectengine.cpp
+++ b/src/core/aspects/qaspectengine.cpp
@@ -98,6 +98,19 @@ 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);
+}
+
QAspectEngine::QAspectEngine(QObject *parent)
: QObject(*new QAspectEnginePrivate, parent)
{
@@ -312,6 +325,9 @@ void QAspectEngine::setRootEntity(QEntityPtr root)
// deregister the nodes from the scene
d->initNodeTree(root.data());
+ // Traverse tree to generate a vector of creation changes
+ d->generateCreationChanges(root.data());
+
// Finally, tell the aspects about the new scene object tree. This is done
// in a blocking manner to allow the aspects to get synchronized before the
// main thread starts triggering potentially more notifications