mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-25 10:11:09 +00:00
Backport frame limiter (again)
# Conflicts: # source/rr/src/game.cpp
This commit is contained in:
parent
99775a8fe0
commit
0dcca3583f
2 changed files with 22 additions and 29 deletions
|
@ -2921,30 +2921,23 @@ int viewFPSLimit(void)
|
|||
if (!r_maxfps)
|
||||
return 1;
|
||||
|
||||
static double nextPageDelay = g_frameDelay;
|
||||
uint64_t const delay = llrint(nextPageDelay);
|
||||
static double nextPageDelay;
|
||||
static double lastFrameTicks;
|
||||
|
||||
uint64_t const frameTicks = timerGetTicksU64();
|
||||
uint64_t const frameDelay = (uint64_t)llrint(g_frameDelay);
|
||||
double const frameTicks = timerGetTicksU64();
|
||||
double const elapsedTime = frameTicks-lastFrameTicks;
|
||||
|
||||
static uint64_t lastFrameTicks = frameTicks - frameDelay;
|
||||
uint64_t elapsedTime = frameTicks-lastFrameTicks;
|
||||
|
||||
int frameWaiting = 0;
|
||||
|
||||
if (elapsedTime >= delay)
|
||||
if (elapsedTime >= nextPageDelay)
|
||||
{
|
||||
//If we missed a frame, reset any cumulated remainder from rendering frames early
|
||||
if (elapsedTime > frameDelay)
|
||||
nextPageDelay = g_frameDelay;
|
||||
else
|
||||
nextPageDelay += double(frameDelay-elapsedTime);
|
||||
if (elapsedTime <= nextPageDelay+g_frameDelay)
|
||||
nextPageDelay += g_frameDelay-elapsedTime;
|
||||
|
||||
lastFrameTicks = frameTicks;
|
||||
++frameWaiting;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
return frameWaiting;
|
||||
return 0;
|
||||
}
|
||||
|
||||
float r_ambientlight = 1.0, r_ambientlightrecip = 1.0;
|
||||
|
|
|
@ -7739,23 +7739,23 @@ int G_FPSLimit(void)
|
|||
if (!r_maxfps)
|
||||
return 1;
|
||||
|
||||
static double nextPageDelay;
|
||||
static double lastFrameTicks;
|
||||
static double nextPageDelay;
|
||||
static double lastFrameTicks;
|
||||
|
||||
double const frameTicks = timerGetTicksU64();
|
||||
double const elapsedTime = frameTicks - lastFrameTicks;
|
||||
double const frameTicks = timerGetTicksU64();
|
||||
double const elapsedTime = frameTicks-lastFrameTicks;
|
||||
|
||||
if (elapsedTime >= nextPageDelay)
|
||||
{
|
||||
if (elapsedTime <= nextPageDelay + g_frameDelay)
|
||||
nextPageDelay += g_frameDelay - elapsedTime;
|
||||
if (elapsedTime >= nextPageDelay)
|
||||
{
|
||||
if (elapsedTime <= nextPageDelay+g_frameDelay)
|
||||
nextPageDelay += g_frameDelay-elapsedTime;
|
||||
|
||||
lastFrameTicks = frameTicks;
|
||||
lastFrameTicks = frameTicks;
|
||||
|
||||
return 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue