Cleanup OpenXR on initialisation failure #59466
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
On initialisation of OpenXR, which now happens way at the beginning of starting up Godot, if there was a failure it wouldn't clean things up and still try to set the rest of Godot up as if OpenXR was successfully setup.
This change ensure we clean up right away and Godot will start as normal. It would be nice if we just exist Godot all together at this point but there doesn't seem to be a clean way to do so. That said, the user can react on the initialise call on the interface failing and react accordingly.
OpenXR is a little strange when it comes to this.
With SteamVR if no headset is attached (because the user forgot to plug it in), instead of waiting and alerting the user, it just doesn't create the OpenXR instance and fails right off the bat.
The Oculus runtime gets a little further but will fail as we interrogate OpenXR and ask it to configure the session at this point saying that the requested mode is not available.
In both situations we now halt initialization and properly clean up resulting in Godot starting with OpenXR disabled.