From 68d32040f688aeebb8236e13effcfd9da43de71c Mon Sep 17 00:00:00 2001 From: Fredrik Orderud Date: Wed, 28 Oct 2015 16:04:19 +0100 Subject: [PATCH] Fix Scene3DRenderer crash during destruction. Occurs when destroying a QQuickWindow containing a Qt3d scene. Change-Id: Id951241a34bbac401b52f1f78586037859981e4b Reviewed-by: Paul Lemire --- src/quick3d/imports/scene3d/scene3ditem.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/quick3d/imports/scene3d/scene3ditem.cpp b/src/quick3d/imports/scene3d/scene3ditem.cpp index 32264d4b3..b8f590d84 100644 --- a/src/quick3d/imports/scene3d/scene3ditem.cpp +++ b/src/quick3d/imports/scene3d/scene3ditem.cpp @@ -229,7 +229,8 @@ public Q_SLOTS: // Shutdown the Renderer Aspect while the OpenGL context // is still valid - m_renderAspect->renderShutdown(); + if (m_renderAspect) + m_renderAspect->renderShutdown(); } // SGThread @@ -721,8 +722,9 @@ void Scene3DSGMaterialShader::updateState(const RenderState &state, QSGMaterial void Scene3DCleaner::cleanup() { Q_ASSERT(m_renderer); - delete m_renderer->m_aspectEngine; + delete m_renderer->m_aspectEngine; // also deletes m_renderer->m_renderAspect m_renderer->m_aspectEngine = Q_NULLPTR; + m_renderer->m_renderAspect = Q_NULLPTR; m_renderer->deleteLater(); deleteLater(); }