diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-06-13 16:51:37 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2019-06-13 16:51:37 +0300 |
commit | 0a102925ff4ff2fb4842768a0d80d813594097bb (patch) | |
tree | 16f3a81ddbe6dc8b8a4ee61523155df292be5b4d | |
parent | a313057f6d3d79b617b5f75070b3fe8ae5757ec0 (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.cpp | 4 |
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); |