Do not pause emulation when confirming stop when using NetPlay
Pausing emulation requires to access the CPU thread, which might be blocked waiting for inputs by netplay. Accessing it in this state would cause the whole GUI to hang for set timeout (10s).
This commit is contained in:
parent
1760b3bdad
commit
d906462dee
|
@ -1132,10 +1132,17 @@ void CFrame::DoStop()
|
|||
// Pause the state during confirmation and restore it afterwards
|
||||
Core::EState state = Core::GetState();
|
||||
|
||||
// Do not pause if netplay is running as CPU thread might be blocked
|
||||
// waiting on inputs
|
||||
bool should_pause = !NetPlayDialog::GetNetPlayClient();
|
||||
|
||||
// If exclusive fullscreen is not enabled then we can pause the emulation
|
||||
// before we've exited fullscreen. If not then we need to exit fullscreen first.
|
||||
if (!RendererIsFullscreen() || !g_Config.ExclusiveFullscreenEnabled() ||
|
||||
SConfig::GetInstance().bRenderToMain)
|
||||
should_pause =
|
||||
should_pause && (!RendererIsFullscreen() || !g_Config.ExclusiveFullscreenEnabled() ||
|
||||
SConfig::GetInstance().bRenderToMain);
|
||||
|
||||
if (should_pause)
|
||||
{
|
||||
Core::SetState(Core::CORE_PAUSE);
|
||||
}
|
||||
|
@ -1149,7 +1156,9 @@ void CFrame::DoStop()
|
|||
HotkeyManagerEmu::Enable(true);
|
||||
if (Ret != wxID_YES)
|
||||
{
|
||||
Core::SetState(state);
|
||||
if (should_pause)
|
||||
Core::SetState(state);
|
||||
|
||||
m_confirmStop = false;
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue