core_timing: use high-precision sleeps on non-Windows targets

This commit is contained in:
Liam 2022-10-08 18:27:40 -04:00
parent 155213484b
commit 9632434243

View File

@ -270,6 +270,7 @@ void CoreTiming::ThreadLoop() {
// There are more events left in the queue, wait until the next event. // There are more events left in the queue, wait until the next event.
const auto wait_time = *next_time - GetGlobalTimeNs().count(); const auto wait_time = *next_time - GetGlobalTimeNs().count();
if (wait_time > 0) { if (wait_time > 0) {
#ifdef _WIN32
// Assume a timer resolution of 1ms. // Assume a timer resolution of 1ms.
static constexpr s64 TimerResolutionNS = 1000000; static constexpr s64 TimerResolutionNS = 1000000;
@ -287,6 +288,9 @@ void CoreTiming::ThreadLoop() {
if (event.IsSet()) { if (event.IsSet()) {
event.Reset(); event.Reset();
} }
#else
event.WaitFor(std::chrono::nanoseconds(wait_time));
#endif
} }
} else { } else {
// Queue is empty, wait until another event is scheduled and signals us to continue. // Queue is empty, wait until another event is scheduled and signals us to continue.