FullscreenUI: Fix ClosePauseMenu() running on wrong thread

This commit is contained in:
Stenzek 2025-01-29 19:19:49 +10:00
parent 231ba050a2
commit 224cb6ac8e
No known key found for this signature in database

View File

@ -854,15 +854,10 @@ void FullscreenUI::FixStateIfPaused()
void FullscreenUI::ClosePauseMenu() void FullscreenUI::ClosePauseMenu()
{ {
if (!System::IsValid()) if (!GPUThread::HasGPUBackend())
return; return;
const bool paused = System::IsPaused(); if (GPUThread::IsSystemPaused() && !s_state.was_paused_on_quick_menu_open)
GPUThread::RunOnThread([paused]() {
if (!IsInitialized())
return;
if (paused && !s_state.was_paused_on_quick_menu_open)
Host::RunOnCPUThread([]() { System::PauseSystem(false); }); Host::RunOnCPUThread([]() { System::PauseSystem(false); });
s_state.current_main_window = MainWindowType::None; s_state.current_main_window = MainWindowType::None;
@ -871,7 +866,6 @@ void FullscreenUI::ClosePauseMenu()
QueueResetFocus(FocusResetType::ViewChanged); QueueResetFocus(FocusResetType::ViewChanged);
UpdateRunIdleState(); UpdateRunIdleState();
FixStateIfPaused(); FixStateIfPaused();
});
} }
void FullscreenUI::OpenPauseSubMenu(PauseSubMenu submenu) void FullscreenUI::OpenPauseSubMenu(PauseSubMenu submenu)
@ -6062,7 +6056,8 @@ void FullscreenUI::DrawAchievementsLoginWindow()
ImGui::SetCursorPosX((ImGui::GetWindowWidth() - item_width) * 0.5f); ImGui::SetCursorPosX((ImGui::GetWindowWidth() - item_width) * 0.5f);
ImGui::SetNextItemWidth(item_width); ImGui::SetNextItemWidth(item_width);
ImGui::InputTextWithHint("##username", FSUI_CSTR("User Name"), username, sizeof(username), is_logging_in ? ImGuiInputTextFlags_ReadOnly : 0); ImGui::InputTextWithHint("##username", FSUI_CSTR("User Name"), username, sizeof(username),
is_logging_in ? ImGuiInputTextFlags_ReadOnly : 0);
ImGui::NextColumn(); ImGui::NextColumn();
ImGui::SetCursorPosX((ImGui::GetWindowWidth() - item_width) * 0.5f); ImGui::SetCursorPosX((ImGui::GetWindowWidth() - item_width) * 0.5f);