Remove static lifetime object to avoid late destruction

(cherry picked from commit cd198f7517)
This commit is contained in:
Bryce Hutchings 2025-09-24 11:24:49 -07:00 committed by Thaddeus Crews
parent 6c180272b4
commit 757dbe621f
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 11 additions and 6 deletions

View file

@ -360,13 +360,16 @@ void *OpenXRExtensionWrapper::set_android_surface_swapchain_create_info_and_get_
}
Ref<OpenXRAPIExtension> OpenXRExtensionWrapper::_gdextension_get_openxr_api() {
static Ref<OpenXRAPIExtension> 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() {
}

View file

@ -56,6 +56,8 @@ class OpenXRExtensionWrapper : public Object {
protected:
static void _bind_methods();
Ref<OpenXRAPIExtension> 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<void>);
OpenXRExtensionWrapper() = default;
virtual ~OpenXRExtensionWrapper() = default;
OpenXRExtensionWrapper();
virtual ~OpenXRExtensionWrapper() override;
};
// `OpenXRGraphicsExtensionWrapper` implements specific logic for each supported graphics API.