From 7951ac7db11a61d3503a75b6dc9870066e42b7c4 Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Sun, 6 Sep 2026 18:26:37 +0300 Subject: [PATCH] Bruno Fix overlay 3.0 --- .../hle/service/am/display_layer_manager.cpp | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/core/hle/service/am/display_layer_manager.cpp b/src/core/hle/service/am/display_layer_manager.cpp index cd9e26e899..494e8a132b 100644 --- a/src/core/hle/service/am/display_layer_manager.cpp +++ b/src/core/hle/service/am/display_layer_manager.cpp @@ -73,20 +73,16 @@ Result DisplayLayerManager::CreateManagedDisplayLayer(u64* out_layer_id) { R_TRY(m_manager_display_service->CreateManagedLayer( out_layer_id, 0, display_id, Service::AppletResourceUserId{m_process->GetProcessId()})); - m_manager_display_service->SetLayerVisibility(m_visible, *out_layer_id); - (void)m_display_service->GetContainer()->SetLayerStackMask(*out_layer_id, - this->GetLayerStackMask()); - if (m_applet_id != AppletId::Application) { (void)m_manager_display_service->SetLayerBlending(m_blending_enabled, *out_layer_id); if (m_applet_id == AppletId::OverlayDisplay) { - (void)m_manager_display_service->SetLayerZIndex(Overlay, *out_layer_id); + (void)m_manager_display_service->SetLayerZIndex(-1, *out_layer_id); + (void)m_display_service->GetContainer()->SetLayerIsOverlay(*out_layer_id, true); } else { - (void)m_manager_display_service->SetLayerZIndex(Foreground, *out_layer_id); + (void)m_manager_display_service->SetLayerZIndex(1, *out_layer_id); } } - - m_display_service->GetContainer()->SetLayerZIndex(*out_layer_id, true); + (void)m_display_service->GetContainer()->SetLayerZIndex(*out_layer_id, true); m_managed_display_layers.emplace(*out_layer_id); R_SUCCEED(); @@ -126,16 +122,14 @@ Result DisplayLayerManager::IsSystemBufferSharingEnabled() { // Ensure the overlay layer is visible m_manager_display_service->SetLayerVisibility(m_visible, m_system_shared_layer_id); - (void)m_manager_display_service->SetLayerBlending(m_blending_enabled, m_system_shared_layer_id); - s32 initial_z = Foreground; + m_manager_display_service->SetLayerBlending(m_blending_enabled, m_system_shared_layer_id); + s32 initial_z = 1; + (void)m_display_service->GetContainer()->SetLayerZIndex(m_system_shared_layer_id, true); if (m_applet_id == AppletId::OverlayDisplay) { - initial_z = Overlay; - (void)m_manager_display_service->SetLayerZIndex(initial_z, m_system_shared_layer_id); + initial_z = -1; (void)m_display_service->GetContainer()->SetLayerIsOverlay(m_system_shared_layer_id, true); } m_manager_display_service->SetLayerZIndex(initial_z, m_system_shared_layer_id); - m_display_service->GetContainer()->SetLayerZIndex(m_system_shared_layer_id, true); - m_managed_display_layers.emplace(m_system_shared_layer_id); R_SUCCEED(); }