diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2020-08-21 11:09:44 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2020-08-26 15:44:23 +0200 |
commit | 54c8d77ef2f4590c4d125274844665f2ea2c4f65 (patch) | |
tree | 0655de77b7874906743a6d30227c69f4856d5a81 /src/quick3d/imports/scene3d/scene3ditem_p.h | |
parent | 6ab35d627447830ca293dc6749b715de20b9fd23 (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.h | 15 |
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; |