diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2019-08-08 14:25:59 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2019-08-13 14:32:47 +0200 |
commit | 5344d87197c83feb7d00931a6756eea870be953c (patch) | |
tree | d30e174be4d26ec30945624b117d7613508daef1 | |
parent | 2e6f30c807421dfec7821ca9cd61d6ac39e03e0c (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.cpp | 6 |
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 |