diff --git a/Core/HLE/sceIo.cpp b/Core/HLE/sceIo.cpp index aebf3e7de5..ae5ebe92fb 100644 --- a/Core/HLE/sceIo.cpp +++ b/Core/HLE/sceIo.cpp @@ -435,9 +435,9 @@ void __IoManagerThread() { } void __IoWakeManager() { + // Ping the thread so that it knows to check coreState. ioManagerThreadEnabled = false; ioManager.FinishEventLoop(); - ioManager.SyncThread(); } void __IoInit() { diff --git a/Core/System.cpp b/Core/System.cpp index 76cc0b7fc4..6deec228d2 100644 --- a/Core/System.cpp +++ b/Core/System.cpp @@ -269,13 +269,10 @@ void Core_UpdateState(CoreState newState) { } void System_Wake() { - if (CPU_IsReady()) { - CPU_NextStateNot(CPU_THREAD_NOT_RUNNING, CPU_THREAD_SHUTDOWN); - CPU_WaitStatus(cpuThreadReplyCond, &CPU_IsShutdown); - } + // Ping the threads so they check coreState. + CPU_NextStateNot(CPU_THREAD_NOT_RUNNING, CPU_THREAD_SHUTDOWN); if (gpu) { gpu->FinishEventLoop(); - gpu->SyncThread(); } }