Keep EmuThread running on game shutdown.

Especially relevant for games that call sceKernelExitGame(), like most
homebrew.  Otherwise, EmuThread actually quits and we can't continue.
This commit is contained in:
Unknown W. Brackets 2013-06-18 00:31:15 -07:00
parent 97943bfbc3
commit 926e1ebddc
2 changed files with 10 additions and 1 deletions

View file

@ -32,6 +32,7 @@ enum GlobalUIState {
UISTATE_MENU,
UISTATE_PAUSEMENU,
UISTATE_INGAME,
UISTATE_EXIT,
};

View file

@ -67,6 +67,7 @@ void EmuThread_Start()
void EmuThread_Stop()
{
globalUIState = UISTATE_EXIT;
// DSound_UpdateSound();
Core_Stop();
Core_WaitInactive(800);
@ -137,7 +138,14 @@ unsigned int WINAPI TheThread(void *)
Core_EnableStepping(FALSE);
Core_Run();
while (globalUIState != UISTATE_EXIT)
{
Core_Run();
// We're here again, so the game quit. Restart Core_Run() which controls the UI.
// This way they can load a new game.
Core_UpdateState(CORE_RUNNING);
}
shutdown:
_InterlockedExchange(&emuThreadReady, THREAD_SHUTDOWN);