[client] fix the fps limiter

This commit is contained in:
Geoffrey McRae 2020-05-22 18:06:29 +10:00
parent 88dad36449
commit 4580b18b04
2 changed files with 2 additions and 23 deletions

View File

@ -1 +1 @@
B2-rc1-1-g075c82b32c+1 B2-rc1-2-g88dad36449+1

View File

@ -148,32 +148,11 @@ static int renderThread(void * unused)
/* signal to other threads that the renderer is ready */ /* signal to other threads that the renderer is ready */
lgSignalEvent(e_startup); lgSignalEvent(e_startup);
unsigned int resyncCheck = 0;
struct timespec time; struct timespec time;
clock_gettime(CLOCK_REALTIME, &time);
while(state.running) while(state.running)
{ {
// if our clock is too far out of sync, resync it clock_gettime(CLOCK_REALTIME, &time);
// this can happen when switching to/from a TTY, or due to clock drift
// we only check this once every 100 frames
if (state.frameTime > 0 && ++resyncCheck == 100)
{
resyncCheck = 0;
struct timespec tmp;
clock_gettime(CLOCK_REALTIME, &tmp);
if (tmp.tv_nsec - time.tv_nsec < 0)
{
tmp.tv_sec -= time.tv_sec - 1;
tmp.tv_nsec = 1000000000 + tmp.tv_nsec - time.tv_nsec;
}
else
{
tmp.tv_sec -= time.tv_sec;
tmp.tv_nsec -= time.tv_nsec;
}
}
if (state.lgrResize) if (state.lgrResize)
{ {