From e3db39105f1c63f3ac29ea76217256fe7e91bdfe Mon Sep 17 00:00:00 2001 From: Ben Doherty Date: Tue, 19 Mar 2024 16:14:45 -0700 Subject: [PATCH] iOS: fix gltf-viewer crash while destruction ResourceLoader (#7684) --- ios/samples/gltf-viewer/gltf-viewer/FILModelView.mm | 8 ++++---- libs/gltfio/include/gltfio/ResourceLoader.h | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ios/samples/gltf-viewer/gltf-viewer/FILModelView.mm b/ios/samples/gltf-viewer/gltf-viewer/FILModelView.mm index 2136fb4ed0..20448ee63c 100644 --- a/ios/samples/gltf-viewer/gltf-viewer/FILModelView.mm +++ b/ios/samples/gltf-viewer/gltf-viewer/FILModelView.mm @@ -275,10 +275,6 @@ const float kSensitivity = 100.0f; - (void)dealloc { [self destroyModel]; - delete _manipulator; - delete _stbDecoder; - delete _ktxDecoder; - _materialProvider->destroyMaterials(); delete _materialProvider; auto* ncm = _assetLoader->getNames(); @@ -286,6 +282,10 @@ const float kSensitivity = 100.0f; AssetLoader::destroy(&_assetLoader); delete _resourceLoader; + delete _manipulator; + delete _stbDecoder; + delete _ktxDecoder; + _engine->destroy(_swapChain); _engine->destroy(_view); EntityManager::get().destroy(_entities.camera); diff --git a/libs/gltfio/include/gltfio/ResourceLoader.h b/libs/gltfio/include/gltfio/ResourceLoader.h index acccc9f86f..d222871bd7 100644 --- a/libs/gltfio/include/gltfio/ResourceLoader.h +++ b/libs/gltfio/include/gltfio/ResourceLoader.h @@ -93,7 +93,8 @@ public: /** * Register a plugin that can consume PNG / JPEG content and produce filament::Texture objects. * - * Destruction of the given provider is the client's responsibility. + * Destruction of the given provider is the client's responsibility and must be done after the + * destruction of this ResourceLoader. */ void addTextureProvider(const char* mimeType, TextureProvider* provider);