summaryrefslogtreecommitdiffstats
path: root/src/quick3d/imports/scene3d/scene3ditem_p.h
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2020-08-21 11:09:44 +0200
committerPaul Lemire <paul.lemire@kdab.com>2020-08-26 15:44:23 +0200
commit54c8d77ef2f4590c4d125274844665f2ea2c4f65 (patch)
tree0655de77b7874906743a6d30227c69f4856d5a81 /src/quick3d/imports/scene3d/scene3ditem_p.h
parent6ab35d627447830ca293dc6749b715de20b9fd23 (diff)
rhi: apply Scene3D changes from 5.15
Should fix potential crash on shutdown Change-Id: If1b2180532d23ad8187b25014d0d3a51a7eb1ebe Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src/quick3d/imports/scene3d/scene3ditem_p.h')
-rw-r--r--src/quick3d/imports/scene3d/scene3ditem_p.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/quick3d/imports/scene3d/scene3ditem_p.h b/src/quick3d/imports/scene3d/scene3ditem_p.h
index 03de6ca0f..eb38149fb 100644
--- a/src/quick3d/imports/scene3d/scene3ditem_p.h
+++ b/src/quick3d/imports/scene3d/scene3ditem_p.h
@@ -73,6 +73,7 @@ class Scene3DCleaner;
class Scene3DView;
class QFrameGraphNode;
class QRenderSurfaceSelector;
+class AspectEngineDestroyer;
class Scene3DItem : public QQuickItem
{
@@ -130,34 +131,36 @@ Q_SIGNALS:
private Q_SLOTS:
void applyRootEntityChange();
- void onBeforeSync();
void requestUpdate();
private:
+ void synchronize();
+ bool prepareQt3DFrame();
QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *nodeData) override;
void setWindowSurface(QObject *rootObject);
void setCameraAspectModeHelper();
void updateCameraAspectRatio();
void mousePressEvent(QMouseEvent *event) override;
- bool needsRender();
+ bool needsRender(QRenderAspect *renderAspect);
void updateWindowSurface();
void createDummySurface(QWindow *window, QRenderSurfaceSelector *surfaceSelector);
void applyAspects();
QStringList m_aspects;
- // Store as shared pointer so that aspect engine doesn't delete it.
- QSharedPointer<Qt3DCore::QEntity> m_entity;
+ Qt3DCore::QEntity *m_entity;
Qt3DCore::QEntity *m_viewHolderEntity;
Qt3DRender::QFrameGraphNode *m_viewHolderFG;
Qt3DCore::QAspectEngine *m_aspectEngine;
Qt3DCore::QAspectEngine *m_aspectToDelete;
- QRenderAspect *m_renderAspect;
- Scene3DRenderer *m_renderer;
+ QSGNode *m_lastManagerNode;
+ AspectEngineDestroyer *m_aspectEngineDestroyer;
bool m_multisample;
bool m_dirty;
bool m_dirtyViews;
+ bool m_wasFrameProcessed;
+ bool m_wasSGUpdated;
QPointer<Qt3DRender::QCamera> m_camera;
CameraAspectRatioMode m_cameraAspectRatioMode;