summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2019-08-08 14:25:59 +0200
committerPaul Lemire <paul.lemire@kdab.com>2019-08-13 14:32:47 +0200
commit5344d87197c83feb7d00931a6756eea870be953c (patch)
treed30e174be4d26ec30945624b117d7613508daef1
parent2e6f30c807421dfec7821ca9cd61d6ac39e03e0c (diff)
RenderSettings: only destroy the RenderSettings component that is used
Since we only create a backend node for the first RenderSettings component that is inserted in the scene, we should only destroy that instance. Otherwise, in the case we have several QRenderSettings components in a scene, if one of them gets destroyed we might end up destroying the RenderSettings instanced actually used by the Renderer. We so far assumed there would only be a single QRenderSettings per application but introducing Scene3DView might change that. Change-Id: Ibef1328253b871f3b40a2298ccd8504130d75d86 Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/render/backend/rendersettings.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/render/backend/rendersettings.cpp b/src/render/backend/rendersettings.cpp
index 96c90f20d..2b8067ce8 100644
--- a/src/render/backend/rendersettings.cpp
+++ b/src/render/backend/rendersettings.cpp
@@ -131,8 +131,10 @@ void RenderSettingsFunctor::destroy(Qt3DCore::QNodeId id) const
Q_UNUSED(id);
// Deletes the old settings object
auto settings = m_renderer->settings();
- delete settings;
- m_renderer->setSettings(nullptr);
+ if (settings && settings->peerId() == id) {
+ m_renderer->setSettings(nullptr);
+ delete settings;
+ }
}
} // namespace Render