mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 07:53:26 +00:00
Merge pull request #110868 from brycehutchings/openxr_late_destruction_crash_fix
Fix late destruction access violation with OpenXRAPIExtension object
This commit is contained in:
commit
e49e73e160
2 changed files with 11 additions and 6 deletions
|
@ -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() {
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue