[client/obs] scheduler: correct phase feedback

Only report the client queue lead when JIT rendering provides a valid
measurement. Clamp linear phase errors instead of wrapping them into the
opposite direction at half of a refresh period.

Timestamp OBS frames after the shared framebuffer becomes ready.
This commit is contained in:
Geoffrey McRae
2026-08-05 11:52:44 +10:00
parent 2c74f4a0f9
commit 12f6485e52
4 changed files with 25 additions and 25 deletions

View File

@@ -434,17 +434,12 @@ static void frameTimingFinishRender(const LG_RendererFrameTiming * timing,
}
LG_UNLOCK(l_frameTiming.lock);
if (feedbackFrameSerial && feedbackGeneration)
if (g_state.jitRender && feedbackFrameSerial && feedbackGeneration &&
feedbackQueueStart && prepareStart >= feedbackQueueStart)
{
uint64_t measuredPhase = timing->swapTime;
if (g_state.jitRender)
{
if (!feedbackQueueStart || prepareStart < feedbackQueueStart)
return;
measuredPhase = prepareStart - feedbackQueueStart;
}
frameScheduler_feedback(
feedbackFrameSerial, feedbackGeneration, measuredPhase);
feedbackFrameSerial, feedbackGeneration,
prepareStart - feedbackQueueStart);
}
}