summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2019-06-13 16:51:37 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2019-06-13 16:51:37 +0300
commit0a102925ff4ff2fb4842768a0d80d813594097bb (patch)
tree16f3a81ddbe6dc8b8a4ee61523155df292be5b4d
parenta313057f6d3d79b617b5f75070b3fe8ae5757ec0 (diff)
Remove reloadable texture callback when deleting material
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 <mahmoud.badri@qt.io> Reviewed-by: Jari Karppinen <jari.karppinen@qt.io> Reviewed-by: Pasi Keränen <pasi.keranen@qt.io>
-rw-r--r--src/runtime/Qt3DSQmlEngine.cpp4
1 files changed, 4 insertions, 0 deletions
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<TElement *> &elements,
model->m_FirstMaterial);
QT3DS_FREE(allocator, material);
}
+ } else if (type == qt3ds::render::GraphObjectTypes::Image) {
+ auto image = static_cast<qt3ds::render::SImage *>(&translator->RenderObject());
+ if (image->m_LoadedTextureData)
+ image->m_LoadedTextureData->m_callbacks.removeOne(image);
}
QT3DS_FREE(allocator, &translator->RenderObject());
QT3DS_FREE(allocator, translator);