diff options
| author | Andy Nichols <[email protected]> | 2022-05-11 15:00:22 +0200 |
|---|---|---|
| committer | Christian Strømme <[email protected]> | 2022-05-20 12:35:39 +0000 |
| commit | 1082836574881c3d40d0b6c76b0a0db36c383859 (patch) | |
| tree | e0b4c3eb81cabc06f661288853d03f71c183447d /src/quick3d/qquick3dscenemanager_p.h | |
| parent | 95385c2c7ad55dd3deda80e675219915e04d4a33 (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.h | 8 |
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(); }; |
