From 94123d5ef40e6843beb27a653f5e01dd3181a375 Mon Sep 17 00:00:00 2001 From: Braden Obrzut Date: Mon, 15 Sep 2014 12:59:07 -0400 Subject: [PATCH] - Applied anonymous patch to fix uncapped stuttering in SDL backend. --- src/sdl/i_system.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/sdl/i_system.cpp b/src/sdl/i_system.cpp index 9b3027a7d8..8fea36c375 100644 --- a/src/sdl/i_system.cpp +++ b/src/sdl/i_system.cpp @@ -123,14 +123,13 @@ void I_EndRead(void) static DWORD TicStart; -static DWORD TicNext; static DWORD BaseTime; static int TicFrozen; // Signal based timer. static Semaphore timerWait; static int tics; -static DWORD sig_start, sig_next; +static DWORD sig_start; void I_SelectTimer(); @@ -169,7 +168,6 @@ int I_GetTimePolled (bool saveMS) if (saveMS) { TicStart = tm; - TicNext = Scale((Scale (tm, TICRATE, 1000) + 1), 1000, TICRATE); } return Scale(tm - BaseTime, TICRATE, 1000); } @@ -179,7 +177,6 @@ int I_GetTimeSignaled (bool saveMS) if (saveMS) { TicStart = sig_start; - TicNext = sig_next; } return tics; } @@ -250,7 +247,6 @@ void I_HandleAlarm (int sig) if(!TicFrozen) tics++; sig_start = SDL_GetTicks(); - sig_next = Scale((Scale (sig_start, TICRATE, 1000) + 1), 1000, TICRATE); SEMAPHORE_SIGNAL(timerWait) } @@ -293,15 +289,14 @@ void I_SelectTimer() fixed_t I_GetTimeFrac (uint32 *ms) { DWORD now = SDL_GetTicks (); - if (ms) *ms = TicNext; - DWORD step = TicNext - TicStart; - if (step == 0) + if (ms) *ms = TicStart + (1000 / TICRATE); + if (TicStart == 0) { return FRACUNIT; } else { - fixed_t frac = clamp ((now - TicStart)*FRACUNIT/step, 0, FRACUNIT); + fixed_t frac = clamp ((now - TicStart)*FRACUNIT*TICRATE/1000, 0, FRACUNIT); return frac; } }