mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 06:12:19 +00:00
- Applied anonymous patch to fix uncapped stuttering in SDL backend.
This commit is contained in:
parent
4be9a71636
commit
94123d5ef4
1 changed files with 4 additions and 9 deletions
|
@ -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<fixed_t> ((now - TicStart)*FRACUNIT/step, 0, FRACUNIT);
|
||||
fixed_t frac = clamp<fixed_t> ((now - TicStart)*FRACUNIT*TICRATE/1000, 0, FRACUNIT);
|
||||
return frac;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue