From 18726a451862622f4baf27d3f1db923249abd58b Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Sat, 12 Sep 2026 03:24:00 +0300 Subject: [PATCH] [am] Bruno FIX OVERLAY 2.0 --- .../hle/service/am/display_layer_manager.cpp | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/core/hle/service/am/display_layer_manager.cpp b/src/core/hle/service/am/display_layer_manager.cpp index 494e8a132b..cd9e26e899 100644 --- a/src/core/hle/service/am/display_layer_manager.cpp +++ b/src/core/hle/service/am/display_layer_manager.cpp @@ -73,16 +73,20 @@ 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(-1, *out_layer_id); - (void)m_display_service->GetContainer()->SetLayerIsOverlay(*out_layer_id, true); + (void)m_manager_display_service->SetLayerZIndex(Overlay, *out_layer_id); } else { - (void)m_manager_display_service->SetLayerZIndex(1, *out_layer_id); + (void)m_manager_display_service->SetLayerZIndex(Foreground, *out_layer_id); } } - (void)m_display_service->GetContainer()->SetLayerZIndex(*out_layer_id, true); + + m_display_service->GetContainer()->SetLayerZIndex(*out_layer_id, true); m_managed_display_layers.emplace(*out_layer_id); R_SUCCEED(); @@ -122,14 +126,16 @@ Result DisplayLayerManager::IsSystemBufferSharingEnabled() { // Ensure the overlay layer is visible m_manager_display_service->SetLayerVisibility(m_visible, m_system_shared_layer_id); - 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); + (void)m_manager_display_service->SetLayerBlending(m_blending_enabled, m_system_shared_layer_id); + s32 initial_z = Foreground; if (m_applet_id == AppletId::OverlayDisplay) { - initial_z = -1; + initial_z = Overlay; + (void)m_manager_display_service->SetLayerZIndex(initial_z, m_system_shared_layer_id); (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(); }