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);