Clock updates
This commit is contained in:
@@ -60,6 +60,27 @@ void TestLatePollRecordsSkippedFrames()
|
||||
Expect(cadence.SkippedFrameCount() == 3, "late poll accumulates skipped frames");
|
||||
}
|
||||
|
||||
void TestLatePollSkipsMissedIntervalsInsteadOfCatchingUp()
|
||||
{
|
||||
using Clock = RenderCadenceClock::Clock;
|
||||
RenderCadenceClock cadence(10.0);
|
||||
const auto start = Clock::now();
|
||||
cadence.Reset(start);
|
||||
|
||||
const auto late = start + std::chrono::milliseconds(35);
|
||||
const auto tick = cadence.Poll(late);
|
||||
Expect(tick.due, "late skipped-interval poll is due");
|
||||
Expect(tick.skippedFrames == 3, "late skipped-interval poll counts missed frames");
|
||||
|
||||
cadence.MarkRendered(late);
|
||||
Expect(cadence.NextRenderTime() > late, "late render schedules the next tick in the future");
|
||||
Expect(cadence.NextRenderTime() - late <= std::chrono::milliseconds(6), "late render does not leave catch-up frames due immediately");
|
||||
|
||||
const auto immediateFollowup = cadence.Poll(late);
|
||||
Expect(!immediateFollowup.due, "cadence does not allow an immediate catch-up render after a late frame");
|
||||
Expect(immediateFollowup.sleepFor > RenderCadenceClock::Duration::zero(), "cadence reports wait time after skipping missed intervals");
|
||||
}
|
||||
|
||||
void TestMarkRenderedRebasesAfterLargeStall()
|
||||
{
|
||||
using Clock = RenderCadenceClock::Clock;
|
||||
@@ -81,6 +102,7 @@ int main()
|
||||
TestEarlyPollWaitsWithoutAdvancing();
|
||||
TestDuePollRendersWithoutSkipping();
|
||||
TestLatePollRecordsSkippedFrames();
|
||||
TestLatePollSkipsMissedIntervalsInsteadOfCatchingUp();
|
||||
TestMarkRenderedRebasesAfterLargeStall();
|
||||
|
||||
if (gFailures != 0)
|
||||
|
||||
Reference in New Issue
Block a user