From f708cebe10a9c4862a29c042ac394a62f046599b Mon Sep 17 00:00:00 2001 From: pionere Date: Tue, 12 Apr 2022 15:35:32 +0200 Subject: [PATCH] fix os2 timer in fallback mode --- src/timer/os2/SDL_systimer.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/timer/os2/SDL_systimer.c b/src/timer/os2/SDL_systimer.c index c5bcf64b7..8a8425d29 100644 --- a/src/timer/os2/SDL_systimer.c +++ b/src/timer/os2/SDL_systimer.c @@ -39,6 +39,7 @@ typedef unsigned long long ULLONG; +static SDL_bool ticks_started = SDL_FALSE; static ULONG ulTmrFreq = 0; static ULLONG ullTmrStart = 0; @@ -46,7 +47,14 @@ void SDL_TicksInit(void) { ULONG ulTmrStart; /* for 32-bit fallback. */ - ULONG ulRC = DosTmrQueryFreq(&ulTmrFreq); + ULONG ulRC; + + if (ticks_started) { + return; + } + ticks_started = SDL_TRUE; + + ulRC = DosTmrQueryFreq(&ulTmrFreq); if (ulRC != NO_ERROR) { debug_os2("DosTmrQueryFreq() failed, rc = %u", ulRC); } else { @@ -65,6 +73,7 @@ SDL_TicksInit(void) void SDL_TicksQuit(void) { + ticks_started = SDL_FALSE; } Uint64 @@ -73,7 +82,7 @@ SDL_GetTicks64(void) Uint64 ui64Result; ULLONG ullTmrNow; - if (ulTmrFreq == 0) { /* Was not initialized. */ + if (!ticks_started) { SDL_TicksInit(); }