mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'frameskip-fixups' into 'master'
Measure frameskip timing before sleeping See merge request KartKrew/Kart!1602
This commit is contained in:
commit
a3b2dc11ec
1 changed files with 19 additions and 13 deletions
|
|
@ -976,20 +976,9 @@ void D_SRB2Loop(void)
|
||||||
|
|
||||||
// Fully completed frame made.
|
// Fully completed frame made.
|
||||||
finishprecise = I_GetPreciseTime();
|
finishprecise = I_GetPreciseTime();
|
||||||
if (!singletics)
|
|
||||||
{
|
|
||||||
INT64 elapsed = (INT64)(finishprecise - enterprecise);
|
|
||||||
|
|
||||||
// in the case of "match refresh rate" + vsync, don't sleep at all
|
// Use the time before sleep for frameskip calculations:
|
||||||
const boolean vsync_with_match_refresh = cv_vidwait.value && cv_fpscap.value == 0;
|
// post-sleep time is literally being intentionally wasted
|
||||||
|
|
||||||
if (elapsed > 0 && (INT64)capbudget > elapsed && !vsync_with_match_refresh)
|
|
||||||
{
|
|
||||||
I_SleepDuration(capbudget - (finishprecise - enterprecise));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Capture the time once more to get the real delta time.
|
|
||||||
finishprecise = I_GetPreciseTime();
|
|
||||||
deltasecs = (double)((INT64)(finishprecise - enterprecise)) / I_GetPrecisePrecision();
|
deltasecs = (double)((INT64)(finishprecise - enterprecise)) / I_GetPrecisePrecision();
|
||||||
deltatics = deltasecs * NEWTICRATE;
|
deltatics = deltasecs * NEWTICRATE;
|
||||||
|
|
||||||
|
|
@ -1009,6 +998,23 @@ void D_SRB2Loop(void)
|
||||||
{
|
{
|
||||||
frameskip = 0;
|
frameskip = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!singletics)
|
||||||
|
{
|
||||||
|
INT64 elapsed = (INT64)(finishprecise - enterprecise);
|
||||||
|
|
||||||
|
// in the case of "match refresh rate" + vsync, don't sleep at all
|
||||||
|
const boolean vsync_with_match_refresh = cv_vidwait.value && cv_fpscap.value == 0;
|
||||||
|
|
||||||
|
if (elapsed > 0 && (INT64)capbudget > elapsed && !vsync_with_match_refresh)
|
||||||
|
{
|
||||||
|
I_SleepDuration(capbudget - (finishprecise - enterprecise));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Capture the time once more to get the real delta time.
|
||||||
|
finishprecise = I_GetPreciseTime();
|
||||||
|
deltasecs = (double)((INT64)(finishprecise - enterprecise)) / I_GetPrecisePrecision();
|
||||||
|
deltatics = deltasecs * NEWTICRATE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue