diff options
author | Määttä Antti <antti.maatta@qt.io> | 2018-02-08 14:54:56 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2018-02-09 06:40:16 +0000 |
commit | 81a78215643cd60456669d35ae55c46bd387b922 (patch) | |
tree | 014e6a693951e830a62dc7635db637f243377f53 /src/Authoring/Studio/Render/StudioRendererTranslation.cpp | |
parent | ec93cf1b16255e85198fe00cfe0593703a164d72 (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.cpp | 9 |
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); |