1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-16 14:00:40 +00:00

Remove static lifetime object to avoid late destruction

This commit is contained in:
Bryce Hutchings
2025-09-24 11:24:49 -07:00
parent b7c5fcaf1e
commit cd198f7517
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() { 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; return openxr_api_extension;
} }
void OpenXRExtensionWrapper::_gdextension_register_extension_wrapper() { void OpenXRExtensionWrapper::_gdextension_register_extension_wrapper() {
OpenXRAPI::register_extension_wrapper(this); OpenXRAPI::register_extension_wrapper(this);
} }
OpenXRExtensionWrapper::OpenXRExtensionWrapper() {
openxr_api_extension.instantiate();
}
OpenXRExtensionWrapper::~OpenXRExtensionWrapper() {
}

View File

@@ -56,6 +56,8 @@ class OpenXRExtensionWrapper : public Object {
protected: protected:
static void _bind_methods(); static void _bind_methods();
Ref<OpenXRAPIExtension> openxr_api_extension;
public: public:
// `get_requested_extensions` should return a list of OpenXR extensions related to this extension. // `get_requested_extensions` should return a list of OpenXR extensions related to this extension.
// If the bool * is a nullptr this extension is mandatory // If the bool * is a nullptr this extension is mandatory
@@ -180,8 +182,8 @@ public:
GDVIRTUAL1R(bool, _on_event_polled, GDExtensionConstPtr<void>); GDVIRTUAL1R(bool, _on_event_polled, GDExtensionConstPtr<void>);
OpenXRExtensionWrapper() = default; OpenXRExtensionWrapper();
virtual ~OpenXRExtensionWrapper() = default; virtual ~OpenXRExtensionWrapper() override;
}; };
// `OpenXRGraphicsExtensionWrapper` implements specific logic for each supported graphics API. // `OpenXRGraphicsExtensionWrapper` implements specific logic for each supported graphics API.