From 0a102925ff4ff2fb4842768a0d80d813594097bb Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 13 Jun 2019 16:51:37 +0300 Subject: Remove reloadable texture callback when deleting material MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Callbacks would accumulate over time, leading to a memory leak and probably inefficiency as well, as unnecessary callbacks would be called. Task-number: QT3DS-3632 Change-Id: Ide6854e50df5eb9d4dfb9b61424f2922d99b85bf Reviewed-by: Mahmoud Badri Reviewed-by: Jari Karppinen Reviewed-by: Pasi Keränen --- src/runtime/Qt3DSQmlEngine.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/runtime/Qt3DSQmlEngine.cpp b/src/runtime/Qt3DSQmlEngine.cpp index 46978e0..9fe75e0 100644 --- a/src/runtime/Qt3DSQmlEngine.cpp +++ b/src/runtime/Qt3DSQmlEngine.cpp @@ -2682,6 +2682,10 @@ void CQmlEngineImpl::deleteElements(const QVector &elements, model->m_FirstMaterial); QT3DS_FREE(allocator, material); } + } else if (type == qt3ds::render::GraphObjectTypes::Image) { + auto image = static_cast(&translator->RenderObject()); + if (image->m_LoadedTextureData) + image->m_LoadedTextureData->m_callbacks.removeOne(image); } QT3DS_FREE(allocator, &translator->RenderObject()); QT3DS_FREE(allocator, translator); -- cgit v1.2.3