diff --git a/modules/openxr/extensions/openxr_extension_wrapper.cpp b/modules/openxr/extensions/openxr_extension_wrapper.cpp index f2345acc97f..f1e0b388aa1 100644 --- a/modules/openxr/extensions/openxr_extension_wrapper.cpp +++ b/modules/openxr/extensions/openxr_extension_wrapper.cpp @@ -360,13 +360,16 @@ void *OpenXRExtensionWrapper::set_android_surface_swapchain_create_info_and_get_ } Ref OpenXRExtensionWrapper::_gdextension_get_openxr_api() { - static Ref openxr_api_extension; - if (unlikely(openxr_api_extension.is_null())) { - openxr_api_extension.instantiate(); - } return openxr_api_extension; } void OpenXRExtensionWrapper::_gdextension_register_extension_wrapper() { OpenXRAPI::register_extension_wrapper(this); } + +OpenXRExtensionWrapper::OpenXRExtensionWrapper() { + openxr_api_extension.instantiate(); +} + +OpenXRExtensionWrapper::~OpenXRExtensionWrapper() { +} diff --git a/modules/openxr/extensions/openxr_extension_wrapper.h b/modules/openxr/extensions/openxr_extension_wrapper.h index 7fdda0eb7e7..67a0e580d05 100644 --- a/modules/openxr/extensions/openxr_extension_wrapper.h +++ b/modules/openxr/extensions/openxr_extension_wrapper.h @@ -56,6 +56,8 @@ class OpenXRExtensionWrapper : public Object { protected: static void _bind_methods(); + Ref openxr_api_extension; + public: // `get_requested_extensions` should return a list of OpenXR extensions related to this extension. // If the bool * is a nullptr this extension is mandatory @@ -180,8 +182,8 @@ public: GDVIRTUAL1R(bool, _on_event_polled, GDExtensionConstPtr); - OpenXRExtensionWrapper() = default; - virtual ~OpenXRExtensionWrapper() = default; + OpenXRExtensionWrapper(); + virtual ~OpenXRExtensionWrapper() override; }; // `OpenXRGraphicsExtensionWrapper` implements specific logic for each supported graphics API.