diff --git a/src/core/hle/service/am/display_layer_manager.cpp b/src/core/hle/service/am/display_layer_manager.cpp index 78832bf97d..c06e18c972 100644 --- a/src/core/hle/service/am/display_layer_manager.cpp +++ b/src/core/hle/service/am/display_layer_manager.cpp @@ -80,7 +80,7 @@ Result DisplayLayerManager::CreateManagedDisplayLayer(u64* out_layer_id) { 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(100000, *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(1, *out_layer_id); @@ -129,7 +129,7 @@ Result DisplayLayerManager::IsSystemBufferSharingEnabled() { m_manager_display_service->SetLayerBlending(m_blending_enabled, m_system_shared_layer_id); s32 initial_z = 1; if (m_applet_id == AppletId::OverlayDisplay) { - initial_z = 100000; + 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); diff --git a/src/core/hle/service/am/window_system.cpp b/src/core/hle/service/am/window_system.cpp index 438737c70d..77ca5a76f5 100644 --- a/src/core/hle/service/am/window_system.cpp +++ b/src/core/hle/service/am/window_system.cpp @@ -391,7 +391,7 @@ void WindowSystem::UpdateAppletStateLocked(Applet* applet, bool is_foreground, b s32 z_index = 0; const bool now_foreground = inherited_foreground; if (applet->applet_id == AppletId::OverlayDisplay) { - z_index = 100000; + z_index = applet->overlay_in_foreground ? 100000 : -1; } else if (now_foreground && !is_obscured) { z_index = 2; } else if (now_foreground) { diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp index ef7a3647ff..f87dd847ba 100644 --- a/src/core/hle/service/set/system_settings_server.cpp +++ b/src/core/hle/service/set/system_settings_server.cpp @@ -362,14 +362,10 @@ ISystemSettingsServer::ISystemSettingsServer(Core::System& system_) }; m_system_settings.eula_versions[0] = eula_version; m_system_settings.eula_version_count = 1; - - m_save_thread = - std::jthread([this](std::stop_token stop_token) { StoreSettingsThreadFunc(stop_token); }); } ISystemSettingsServer::~ISystemSettingsServer() { SetSaveNeeded(); - m_save_thread.request_stop(); } bool ISystemSettingsServer::LoadSettingsFile(std::filesystem::path& path, auto&& default_func) { @@ -1419,21 +1415,9 @@ void ISystemSettingsServer::StoreSettings() { } } -void ISystemSettingsServer::StoreSettingsThreadFunc(std::stop_token stop_token) { - Common::SetCurrentThreadName("SettingsStore"); - - while (Common::StoppableTimedWait(stop_token, std::chrono::minutes(1))) { - std::scoped_lock l{m_save_needed_mutex}; - if (!std::exchange(m_save_needed, false)) { - continue; - } - StoreSettings(); - } -} - void ISystemSettingsServer::SetSaveNeeded() { std::scoped_lock l{m_save_needed_mutex}; - m_save_needed = true; + StoreSettings(); } Result ISystemSettingsServer::GetSettingsItemValueImpl(std::span out_value, u64& out_size, diff --git a/src/core/hle/service/set/system_settings_server.h b/src/core/hle/service/set/system_settings_server.h index 4e5e9a1cfc..27a16747f3 100644 --- a/src/core/hle/service/set/system_settings_server.h +++ b/src/core/hle/service/set/system_settings_server.h @@ -165,7 +165,6 @@ public: private: bool LoadSettingsFile(std::filesystem::path& path, auto&& default_func); bool StoreSettingsFile(std::filesystem::path& path, auto& settings); - void StoreSettingsThreadFunc(std::stop_token stop_token); void SetupSettings(); void StoreSettings(); void SetSaveNeeded(); @@ -175,7 +174,6 @@ private: PrivateSettings m_private_settings{}; DeviceSettings m_device_settings{}; ApplnSettings m_appln_settings{}; - std::jthread m_save_thread; std::mutex m_save_needed_mutex; bool m_save_needed{false}; }; diff --git a/src/core/hle/service/vi/conductor.cpp b/src/core/hle/service/vi/conductor.cpp index b41753429e..a271041be6 100644 --- a/src/core/hle/service/vi/conductor.cpp +++ b/src/core/hle/service/vi/conductor.cpp @@ -110,8 +110,7 @@ s64 Conductor::GetNextTicks() const { speed_scale = 1.f; } - const s32 vsync_interval = 1; - const f32 effective_fps = 60.f / static_cast(vsync_interval); + const f32 effective_fps = 60.f / static_cast(m_swap_interval); return static_cast(speed_scale * (1000000000.f / effective_fps)); }