aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick3d/qquick3dscenemanager_p.h
diff options
context:
space:
mode:
authorAndy Nichols <[email protected]>2022-05-11 15:00:22 +0200
committerChristian Strømme <[email protected]>2022-05-20 12:35:39 +0000
commit1082836574881c3d40d0b6c76b0a0db36c383859 (patch)
treee0b4c3eb81cabc06f661288853d03f71c183447d /src/quick3d/qquick3dscenemanager_p.h
parent95385c2c7ad55dd3deda80e675219915e04d4a33 (diff)
SceneManager: Interleave node processing between importScene and scene
Nodes types have to be processed in a specific order where resources are processes by the spatial nodes that depend on them. This didn't take into account import scenes though which were processed separately. If resources in the import scene were required by spatial nodes in the scene they would be processed too late. Instead these two are now processed together when needed. Fixes: QTBUG-103316 Pick-to: 6.3 6.2 Change-Id: I1b77081727e3c35c7862a5eed10e95ff8185e0e3 Reviewed-by: Christian Strømme <[email protected]>
Diffstat (limited to 'src/quick3d/qquick3dscenemanager_p.h')
-rw-r--r--src/quick3d/qquick3dscenemanager_p.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/quick3d/qquick3dscenemanager_p.h b/src/quick3d/qquick3dscenemanager_p.h
index 91d393ce..6607887a 100644
--- a/src/quick3d/qquick3dscenemanager_p.h
+++ b/src/quick3d/qquick3dscenemanager_p.h
@@ -73,7 +73,10 @@ public:
void forcePolish();
void sync();
- void updateDirtyNodes();
+ void cleanupNodes();
+ void updateDirtyResourceNodes();
+ void updateDirtySpatialNodes();
+
void updateDirtyNode(QQuick3DObject *object);
void updateDirtyResource(QQuick3DObject *resourceObject);
void updateDirtySpatialNode(QQuick3DNode *spatialNode);
@@ -81,8 +84,6 @@ public:
QQuick3DObject *lookUpNode(const QSSGRenderGraphObject *node) const;
- void cleanupNodes();
-
QQuick3DObject *dirtySpatialNodeList;
QQuick3DObject *dirtyResourceList;
QQuick3DObject *dirtyImageList;
@@ -104,6 +105,7 @@ Q_SIGNALS:
void windowChanged();
private Q_SLOTS:
+ void updateNodes(QQuick3DObject **listHead);
void preSync();
};