diff --git a/Core/System.cpp b/Core/System.cpp index a073bb7b67..81de7a3db5 100644 --- a/Core/System.cpp +++ b/Core/System.cpp @@ -344,7 +344,7 @@ void PSP_RunLoopUntil(u64 globalticks) { // The CPU doesn't actually respect cpuThreadUntil well, especially when skipping frames. // TODO: Something smarter? Or force CPU to bail periodically? while (!CPU_IsReady()) { - gpu->RunEventsUntil(CoreTiming::GetTicks() + msToCycles(100)); + gpu->RunEventsUntil(CoreTiming::GetTicks() + msToCycles(1000)); } } else { ERROR_LOG(CPU, "Unable to execute CPU run loop, unexpected state: %d", cpuThreadState); diff --git a/Core/ThreadEventQueue.h b/Core/ThreadEventQueue.h index 1cfd805901..bbbf7276bd 100644 --- a/Core/ThreadEventQueue.h +++ b/Core/ThreadEventQueue.h @@ -130,7 +130,11 @@ struct ThreadEventQueue : public B { void FinishEventLoop() { if (threadEnabled_) { - ScheduleEvent(EVENT_FINISH); + lock_guard guard(eventsLock_); + // Don't schedule a finish if it's not even running. + if (eventsRunning_) { + ScheduleEvent(EVENT_FINISH); + } } }