diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index eba116ec62..996c7770a6 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -806,15 +806,16 @@ void CFrame::DoStop() std::lock_guard lk(keystate_lock); wxMutexGuiEnter(); #endif + + // Pause the state during confirmation and restore it afterwards + Core::State state = Core::GetState(); + // Ask for confirmation in case the user accidentally clicked Stop / Escape if (SConfig::GetInstance().bConfirmStop) { // Exit fullscreen to ensure it does not cover the stop dialog. DoFullscreen(false); - // Pause the state during confirmation and restore it afterwards - Core::State state = Core::GetState(); - // Do not pause if netplay is running as CPU thread might be blocked // waiting on inputs bool should_pause = !NetPlayDialog::GetNetPlayClient(); @@ -853,6 +854,7 @@ void CFrame::DoStop() g_pCodeWindow->GetPanel()->NotifyUpdate(); g_symbolDB.Clear(); Host_NotifyMapLoaded(); + Core::SetState(state); } // TODO: Show the author/description dialog here @@ -881,8 +883,9 @@ bool CFrame::TriggerSTMPowerEvent() return false; Core::DisplayMessage("Shutting down", 30000); - // Unpause because gracefully shutting down needs the game to actually request a shutdown - if (Core::GetState() == Core::State::Paused) + // Unpause because gracefully shutting down needs the game to actually request a shutdown. + // Do not unpause in debug mode to allow debugging until the complete shutdown. + if (Core::GetState() == Core::State::Paused && !UseDebugger) DoPause(); ProcessorInterface::PowerButton_Tap(); m_confirmStop = false;