MacOS+Linux: Use CLOCK_MONOTONIC_RAW over CLOCK_MONOTONIC (#313)

On MacOS this fixes the framerate being too high due to discontinuities in the timer that drives the emulated vsync. It also fixes behavior of the GetTickCount() wrapper.
This commit is contained in:
Tillsunset
2022-09-29 11:36:27 +02:00
committed by GitHub
parent a28d67bafd
commit 3fb4b5e26c
2 changed files with 3 additions and 3 deletions
+1 -1
View File
@@ -4,6 +4,6 @@
uint32_t GetTickCount()
{
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
return (1000 * ts.tv_sec + ts.tv_nsec / 1000000);
}
@@ -9,7 +9,7 @@ HighResolutionTimer HighResolutionTimer::now()
return HighResolutionTimer(pc.QuadPart);
#else
timespec pc;
clock_gettime(CLOCK_MONOTONIC, &pc);
clock_gettime(CLOCK_MONOTONIC_RAW, &pc);
uint64 nsec = (uint64)pc.tv_sec * (uint64)1000000000 + (uint64)pc.tv_nsec;
return HighResolutionTimer(nsec);
#endif
@@ -28,7 +28,7 @@ uint64 HighResolutionTimer::m_freq = []() -> uint64 {
return (uint64)(freq.QuadPart);
#else
timespec pc;
clock_getres(CLOCK_MONOTONIC, &pc);
clock_getres(CLOCK_MONOTONIC_RAW, &pc);
return (uint64)1000000000 / (uint64)pc.tv_nsec;
#endif
}();