summaryrefslogtreecommitdiffstats
path: root/src/quick3d/imports
diff options
context:
space:
mode:
authorFredrik Orderud <forderud@gmail.com>2016-10-25 20:22:22 +0200
committerFredrik Orderud <forderud@gmail.com>2016-11-02 11:37:59 +0000
commit99f45a690e3ad850f7940b5c21aa13192ef1d8c1 (patch)
tree0c1d7a22fd08ddc011fe91aedc9e0a2bc102cbce /src/quick3d/imports
parentd59d585bea2464b31794f9ea1a8c1ebbf909b301 (diff)
Fix crash in Scene3DRenderer::shutdown caused by nullptr m_aspectEngine
Crash occurs at teardown when using Qt3D inside an ActiveQt application. This triggers the following call sequence: 1: Scene3DCleaner::cleanup is called from the QWindow destructor. This causes m_aspectEngine to be deleted. 2: Scene3DRenderer::shutdown is later called when processing DeferredDelete events. This method crashes when attempting to dereference the now nullptr m_aspectEngine member. Change-Id: I03bd85f2b7ad3e298b23396284624cbccf88b4e0 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/quick3d/imports')
-rw-r--r--src/quick3d/imports/scene3d/scene3drenderer.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/quick3d/imports/scene3d/scene3drenderer.cpp b/src/quick3d/imports/scene3d/scene3drenderer.cpp
index 86f8a7681..326ba0c8f 100644
--- a/src/quick3d/imports/scene3d/scene3drenderer.cpp
+++ b/src/quick3d/imports/scene3d/scene3drenderer.cpp
@@ -183,8 +183,10 @@ void Scene3DRenderer::shutdown()
// Exit the simulation loop so no more jobs are asked for. Once this
// returns it is safe to shutdown the renderer.
- auto engineD = Qt3DCore::QAspectEnginePrivate::get(m_aspectEngine);
- engineD->exitSimulationLoop();
+ if (m_aspectEngine) {
+ auto engineD = Qt3DCore::QAspectEnginePrivate::get(m_aspectEngine);
+ engineD->exitSimulationLoop();
+ }
// Shutdown the Renderer Aspect while the OpenGL context
// is still valid