diff --git a/Core/CoreTiming.cpp b/Core/CoreTiming.cpp index 2e29225390..a080adb17e 100644 --- a/Core/CoreTiming.cpp +++ b/Core/CoreTiming.cpp @@ -519,12 +519,14 @@ void MoveEvents() } } -void AdvanceQuick() +void Advance() { int cyclesExecuted = slicelength - currentMIPS->downcount; globalTimer += cyclesExecuted; currentMIPS->downcount = slicelength; + if (Common::AtomicLoadAcquire(hasTsEvents)) + MoveEvents(); ProcessFifoWaitEvents(); if (!first) @@ -543,14 +545,6 @@ void AdvanceQuick() advanceCallback(cyclesExecuted); } -void Advance() -{ - if (Common::AtomicLoadAcquire(hasTsEvents)) - MoveEvents(); - - AdvanceQuick(); -} - void LogPendingEvents() { Event *ptr = first; diff --git a/Core/CoreTiming.h b/Core/CoreTiming.h index 8d8281f6c8..77af7078c8 100644 --- a/Core/CoreTiming.h +++ b/Core/CoreTiming.h @@ -99,7 +99,6 @@ namespace CoreTiming void RemoveAllEvents(int event_type); bool IsScheduled(int event_type); void Advance(); - void AdvanceQuick(); void MoveEvents(); void ProcessFifoWaitEvents(); diff --git a/Core/HLE/sceGe.cpp b/Core/HLE/sceGe.cpp index 5cc69ce211..f037b510d0 100644 --- a/Core/HLE/sceGe.cpp +++ b/Core/HLE/sceGe.cpp @@ -279,7 +279,7 @@ int sceGeListUpdateStallAddr(u32 displayListID, u32 stallAddress) { DEBUG_LOG(HLE, "sceGeListUpdateStallAddr(dlid=%i, stalladdr=%08x)", displayListID, stallAddress); hleEatCycles(190); - CoreTiming::AdvanceQuick(); + CoreTiming::Advance(); return gpu->UpdateStall(displayListID, stallAddress); } diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 6e2147cb40..6ebc42ca29 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -1169,7 +1169,7 @@ void __KernelIdle() CoreTiming::Idle(); // Advance must happen between Idle and Reschedule, so that threads that were waiting for something // that was triggered at the end of the Idle period must get a chance to be scheduled. - CoreTiming::AdvanceQuick(); + CoreTiming::Advance(); // We must've exited a callback? if (__KernelInCallback()) @@ -1724,7 +1724,7 @@ void __KernelReSchedule(const char *reason) } // Execute any pending events while we're doing scheduling. - CoreTiming::AdvanceQuick(); + CoreTiming::Advance(); if (__IsInInterrupt() || __KernelInCallback() || !__KernelIsDispatchEnabled()) { reason = "In Interrupt Or Callback";