mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-04 05:51:19 +12:00
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:
parent
a28d67bafd
commit
3fb4b5e26c
2 changed files with 3 additions and 3 deletions
|
@ -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
|
||||
}();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue