From 8259a0aeb2068b15da4a34b0cb06370c1da74871 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 19 Oct 2025 14:06:50 +0200 Subject: [PATCH] working on qlaunch now! --- src/core/hle/service/am/applet_manager.cpp | 3 ++- src/core/hle/service/am/display_layer_manager.cpp | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/core/hle/service/am/applet_manager.cpp b/src/core/hle/service/am/applet_manager.cpp index e8bd23a7ac..ee86c47636 100644 --- a/src/core/hle/service/am/applet_manager.cpp +++ b/src/core/hle/service/am/applet_manager.cpp @@ -271,7 +271,8 @@ void AppletManager::SetWindowSystem(WindowSystem* window_system) { overlay_applet->type = AppletType::OverlayApplet; // Use PartialForeground so blending is enabled and overlay can be composed on top overlay_applet->library_applet_mode = LibraryAppletMode::PartialForeground; - m_window_system->TrackApplet(overlay_applet, true); + // Track as a non-application so WindowSystem routes it to m_overlay_display + m_window_system->TrackApplet(overlay_applet, false); overlay_applet->process->Run(); LOG_INFO(Service_AM, "Overlay applet launched before application"); } diff --git a/src/core/hle/service/am/display_layer_manager.cpp b/src/core/hle/service/am/display_layer_manager.cpp index baebe01b97..e31cae4da6 100644 --- a/src/core/hle/service/am/display_layer_manager.cpp +++ b/src/core/hle/service/am/display_layer_manager.cpp @@ -73,7 +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()})); + // Ensure visibility follows our state m_manager_display_service->SetLayerVisibility(m_visible, *out_layer_id); + + // For non-application applets (e.g., overlay), make sure UI layers blend and render on top + if (m_applet_id != AppletId::Application) { + static constexpr s32 kOverlayZ = 100000; + (void)m_manager_display_service->SetLayerBlending(m_blending_enabled, *out_layer_id); + (void)m_manager_display_service->SetLayerZIndex(kOverlayZ, *out_layer_id); + } + m_managed_display_layers.emplace(*out_layer_id); R_SUCCEED();