Fix deadlocks when games hang with Stop, Reset, and Enable Cheats.

This commit is contained in:
The Dax 2013-09-26 22:44:29 -04:00
parent 6143cfabd9
commit adead8ea31

View file

@ -1093,12 +1093,8 @@ namespace MainWindow
break; break;
case ID_EMULATION_STOP: case ID_EMULATION_STOP:
if (Core_IsStepping()) { Core_Stop();
// If the current PC is on a breakpoint, disabling stepping doesn't work without
// explicitly skipping it
CBreakPoints::SetSkipFirst(currentMIPS->pc);
Core_EnableStepping(false);
}
NativeMessageReceived("stop", ""); NativeMessageReceived("stop", "");
Update(); Update();
break; break;
@ -1111,8 +1107,13 @@ namespace MainWindow
Core_EnableStepping(false); Core_EnableStepping(false);
} }
Core_EnableStepping(true);
Core_WaitInactive();
Core_EnableStepping(false);
NativeMessageReceived("reset", ""); NativeMessageReceived("reset", "");
break; break;
case ID_EMULATION_CHEATS: case ID_EMULATION_CHEATS:
g_Config.bEnableCheats = !g_Config.bEnableCheats; g_Config.bEnableCheats = !g_Config.bEnableCheats;
osm.ShowOnOff(g->T("Cheats"), g_Config.bEnableCheats); osm.ShowOnOff(g->T("Cheats"), g_Config.bEnableCheats);
@ -1124,6 +1125,10 @@ namespace MainWindow
Core_EnableStepping(false); Core_EnableStepping(false);
} }
Core_EnableStepping(true);
Core_WaitInactive();
Core_EnableStepping(false);
NativeMessageReceived("reset", ""); NativeMessageReceived("reset", "");
break; break;