From d1f5975888128b73826ded02e680a71d5bd76615 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 3 May 2026 02:47:46 +1000 Subject: [PATCH] FullscreenUI: Fix load/save state leaving system paused --- src/core/fullscreenui.cpp | 10 +++++----- src/core/fullscreenui_private.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/fullscreenui.cpp b/src/core/fullscreenui.cpp index 5ecfe0973..027d10d63 100644 --- a/src/core/fullscreenui.cpp +++ b/src/core/fullscreenui.cpp @@ -378,12 +378,12 @@ void FullscreenUI::FixStateIfPaused() ImGui::UpdateInputEvents(false); } -void FullscreenUI::ClosePauseMenu() +void FullscreenUI::ClosePauseMenu(float transition_time /*= SHORT_TRANSITION_TIME*/) { if (!VideoThread::HasGPUBackend()) return; - BeginTransition(SHORT_TRANSITION_TIME, []() { + BeginTransition(transition_time, []() { s_locals.current_pause_submenu = PauseSubMenu::None; s_locals.pause_menu_was_open = false; SwitchToMainWindow(MainWindowType::None); @@ -858,7 +858,7 @@ void FullscreenUI::RequestRestart() if (result) { Host::RunOnCoreThread(System::ResetSystem); - BeginTransition(LONG_TRANSITION_TIME, &ClosePauseMenuImmediately); + ClosePauseMenu(LONG_TRANSITION_TIME); } else { @@ -1996,7 +1996,7 @@ void FullscreenUI::DrawSaveStateSelector() const bool global = entry.global; const bool is_undo = entry.state_path.empty(); ClearSaveStateEntryList(); // entry no longer valid - ReturnToMainWindow(LONG_TRANSITION_TIME); + ClosePauseMenu(LONG_TRANSITION_TIME); // Loading undo state? if (is_undo) @@ -2014,7 +2014,7 @@ void FullscreenUI::DrawSaveStateSelector() const s32 slot = entry.slot; const bool global = entry.global; ClearSaveStateEntryList(); // entry no longer valid - ReturnToMainWindow(LONG_TRANSITION_TIME); + ClosePauseMenu(LONG_TRANSITION_TIME); Host::RunOnCoreThread([slot, global]() { System::SaveStateToSlot(global, slot); }); }; diff --git a/src/core/fullscreenui_private.h b/src/core/fullscreenui_private.h index e219939f1..fb851254a 100644 --- a/src/core/fullscreenui_private.h +++ b/src/core/fullscreenui_private.h @@ -64,7 +64,7 @@ bool AreAnyDialogsOpen(); bool AreAnyDialogsInteractable(); void PauseForMenuOpen(bool was_paused, bool set_pause_menu_open); -void ClosePauseMenu(); +void ClosePauseMenu(float transition_time = SHORT_TRANSITION_TIME); void ClosePauseMenuImmediately(); void ExitFullscreenAndOpenURL(std::string_view url);