summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Render/StudioRendererTranslation.cpp
diff options
context:
space:
mode:
authorMäättä Antti <antti.maatta@qt.io>2018-02-08 14:54:56 +0200
committerTomi Korpipää <tomi.korpipaa@qt.io>2018-02-09 06:40:16 +0000
commit81a78215643cd60456669d35ae55c46bd387b922 (patch)
tree014e6a693951e830a62dc7635db637f243377f53 /src/Authoring/Studio/Render/StudioRendererTranslation.cpp
parentec93cf1b16255e85198fe00cfe0593703a164d72 (diff)
Fix massive memory leak when dragging object
Fix the memory leak that happens when object is dragged in view other than scene view. This is temporary fix since memory is still leaked if the active layer is changed while in view other than scene view. The core problem is in the engine, because it doesn't release allocated resources when the SEditCameraLayerTranslator is deallocated. Task-number: QT3DS-974 Change-Id: I70dc69ef6167027037b5c8e8d22360db350b0351 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Render/StudioRendererTranslation.cpp')
-rw-r--r--src/Authoring/Studio/Render/StudioRendererTranslation.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Authoring/Studio/Render/StudioRendererTranslation.cpp b/src/Authoring/Studio/Render/StudioRendererTranslation.cpp
index f568d14c..b9f58c2b 100644
--- a/src/Authoring/Studio/Render/StudioRendererTranslation.cpp
+++ b/src/Authoring/Studio/Render/StudioRendererTranslation.cpp
@@ -2022,11 +2022,16 @@ void STranslation::BuildRenderGraph(SGraphObjectTranslator &inParent,
if (m_EditCameraEnabled) {
if (theTranslator->GetGraphObject().m_Type == GraphObjectTypes::Layer) {
if (theChild == m_Doc.GetActiveLayer()) {
- if (m_EditCameraLayerTranslator != nullptr)
+ if (m_EditCameraLayerTranslator != nullptr
+ && m_EditCameraLayerTranslator->GetInstanceHandle() != theChild) {
QT3DS_FREE(m_Allocator, m_EditCameraLayerTranslator);
- m_EditCameraLayerTranslator =
+ m_EditCameraLayerTranslator = nullptr;
+ }
+ if (!m_EditCameraLayerTranslator) {
+ m_EditCameraLayerTranslator =
QT3DS_NEW(m_Allocator, SEditCameraLayerTranslator)(theChild,
m_Allocator);
+ }
theTranslator = m_EditCameraLayerTranslator;
theParentTranslator.AppendChild(theTranslator->GetGraphObject());
BuildRenderGraph(*m_EditCameraLayerTranslator);