diff options
| author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-10-08 18:35:04 -0400 |
|---|---|---|
| committer | FernandoS27 <fsahmkow27@gmail.com> | 2019-10-15 11:55:20 -0400 |
| commit | 248795db6e2979c9fe99c35ffa2398b395b53d0f (patch) | |
| tree | 1b6714882be298ae3c7e3f616039237861dbe0b9 /src/core/hle/kernel/svc.cpp | |
| parent | a24c331b84d4f1a754c3867fc0c0583b0d64bdfa (diff) | |
Kernel: Correct redundant yields to only advance time forward.
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 823d1d4032..101f72b7d4 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -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 |
