Kernel: Correct redundant yields to only advance time forward.

master
Fernando Sahmkow 2019-10-08 18:35:04 +07:00 committed by FernandoS27
parent 7176857177
commit 27d571c084
1 changed files with 5 additions and 3 deletions

@ -1577,10 +1577,12 @@ static void SleepThread(Core::System& system, s64 nanoseconds) {
}
if (redundant) {
system.CoreTiming().Idle();
} else {
system.PrepareReschedule(current_thread->GetProcessorID());
// If it's redundant, the core is pretty much idle. Some games keep idling
// a core while it's doing nothing, we advance timing to avoid costly continuos
// calls.
system.CoreTiming().AddTicks(2000);
}
system.PrepareReschedule(current_thread->GetProcessorID());
}
/// Wait process wide key atomic