Explorar o código

CoreTiming/CycleTimer: Correct Idling.

Fernando Sahmkow %!s(int64=6) %!d(string=hai) anos
pai
achega
bfb5244cf8
Modificáronse 1 ficheiros con 5 adicións e 2 borrados
  1. 5 2
      src/core/core_timing.cpp

+ 5 - 2
src/core/core_timing.cpp

@@ -136,8 +136,11 @@ void CoreTiming::AddTicks(u64 ticks) {
 
 void CoreTiming::Idle() {
     if (!event_queue.empty()) {
-        u64 next_event_time = event_queue.front().time;
-        ticks = nsToCycles(std::chrono::nanoseconds(next_event_time)) + 10U;
+        const u64 next_event_time = event_queue.front().time;
+        const u64 next_ticks = nsToCycles(std::chrono::nanoseconds(next_event_time)) + 10U;
+        if (next_ticks > ticks) {
+            ticks = next_ticks;
+        }
         return;
     }
     ticks += 1000U;