diff options
author | Bastiaan Olij <mux213@gmail.com> | 2023-01-15 16:57:42 +1100 |
---|---|---|
committer | Bastiaan Olij <mux213@gmail.com> | 2023-01-15 16:57:42 +1100 |
commit | 909ec66ca327c25020ab2aeeca9989e9a79a7a44 (patch) | |
tree | f93e345c07bdb68dabd98f961c20b0dd5edb8e50 /modules/openxr/openxr_api.cpp | |
parent | cd3e03432af9a638e342b5b79f76ca4d72f2a1f4 (diff) | |
download | redot-engine-909ec66ca327c25020ab2aeeca9989e9a79a7a44.tar.gz |
Fixes issue where failed start of OpenXR causes issues
Diffstat (limited to 'modules/openxr/openxr_api.cpp')
-rw-r--r-- | modules/openxr/openxr_api.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp index d556f475d2..6b8f140923 100644 --- a/modules/openxr/openxr_api.cpp +++ b/modules/openxr/openxr_api.cpp @@ -560,6 +560,12 @@ void OpenXRAPI::destroy_instance() { instance = XR_NULL_HANDLE; } enabled_extensions.clear(); + + if (graphics_extension != nullptr) { + unregister_extension_wrapper(graphics_extension); + memdelete(graphics_extension); + graphics_extension = nullptr; + } } bool OpenXRAPI::create_session() { @@ -1347,6 +1353,10 @@ void OpenXRAPI::register_extension_wrapper(OpenXRExtensionWrapper *p_extension_w registered_extension_wrappers.push_back(p_extension_wrapper); } +void OpenXRAPI::unregister_extension_wrapper(OpenXRExtensionWrapper *p_extension_wrapper) { + registered_extension_wrappers.erase(p_extension_wrapper); +} + void OpenXRAPI::register_extension_metadata() { for (OpenXRExtensionWrapper *extension_wrapper : registered_extension_wrappers) { extension_wrapper->on_register_metadata(); |