You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Ensure the composition layer is registered when the layer viewport is updated.
This commit is contained in:
committed by
Fredia Huya-Kouadio
parent
594d64ec24
commit
15b9c15517
@@ -219,6 +219,7 @@ void OpenXRCompositionLayer::_setup_composition_layer_provider() {
|
|||||||
if (use_android_surface || layer_viewport) {
|
if (use_android_surface || layer_viewport) {
|
||||||
if (composition_layer_extension) {
|
if (composition_layer_extension) {
|
||||||
composition_layer_extension->register_viewport_composition_layer_provider(openxr_layer_provider);
|
composition_layer_extension->register_viewport_composition_layer_provider(openxr_layer_provider);
|
||||||
|
registered = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: We don't setup/clear when using Android surfaces, so we don't destroy the surface unexpectedly.
|
// NOTE: We don't setup/clear when using Android surfaces, so we don't destroy the surface unexpectedly.
|
||||||
@@ -232,6 +233,7 @@ void OpenXRCompositionLayer::_setup_composition_layer_provider() {
|
|||||||
void OpenXRCompositionLayer::_clear_composition_layer_provider() {
|
void OpenXRCompositionLayer::_clear_composition_layer_provider() {
|
||||||
if (composition_layer_extension) {
|
if (composition_layer_extension) {
|
||||||
composition_layer_extension->unregister_viewport_composition_layer_provider(openxr_layer_provider);
|
composition_layer_extension->unregister_viewport_composition_layer_provider(openxr_layer_provider);
|
||||||
|
registered = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: We don't setup/clear when using Android surfaces, so we don't destroy the surface unexpectedly.
|
// NOTE: We don't setup/clear when using Android surfaces, so we don't destroy the surface unexpectedly.
|
||||||
@@ -296,6 +298,9 @@ void OpenXRCompositionLayer::set_layer_viewport(SubViewport *p_viewport) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
layer_viewport = p_viewport;
|
layer_viewport = p_viewport;
|
||||||
|
if (!registered && is_natively_supported() && openxr_session_running && is_inside_tree() && is_visible()) {
|
||||||
|
_setup_composition_layer_provider();
|
||||||
|
}
|
||||||
|
|
||||||
if (layer_viewport) {
|
if (layer_viewport) {
|
||||||
SubViewport::UpdateMode update_mode = layer_viewport->get_update_mode();
|
SubViewport::UpdateMode update_mode = layer_viewport->get_update_mode();
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ private:
|
|||||||
MeshInstance3D *fallback = nullptr;
|
MeshInstance3D *fallback = nullptr;
|
||||||
bool should_update_fallback_mesh = false;
|
bool should_update_fallback_mesh = false;
|
||||||
bool openxr_session_running = false;
|
bool openxr_session_running = false;
|
||||||
|
bool registered = false;
|
||||||
|
|
||||||
OpenXRViewportCompositionLayerProvider::SwapchainState *swapchain_state = nullptr;
|
OpenXRViewportCompositionLayerProvider::SwapchainState *swapchain_state = nullptr;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user