mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-08-09 16:51:31 +00:00
[client] scheduler: release ownership without live cadence
Renew the frame-schedule lease only while the display server is producing real cadence callbacks. Release ownership after the cadence stalls, and reacquire with an immediate reset when it resumes. For non-JIT rendering, treat only a successful presentation as live cadence.
This commit is contained in:
@@ -647,6 +647,9 @@ static int renderThread(void * unused)
|
||||
if (g_state.jitRender)
|
||||
{
|
||||
const LG_DSWaitFrameResult waitResult = g_state.ds->waitFrame();
|
||||
if (waitResult & LG_DS_WAIT_FRAME_CADENCE)
|
||||
frameScheduler_observeCadence();
|
||||
|
||||
const LG_RendererFrameToken queuedAtWake =
|
||||
waitResult == LG_DS_WAIT_FRAME_CADENCE ?
|
||||
frameTimingQueuedToken() : LG_RENDERER_FRAME_TOKEN_NONE;
|
||||
@@ -756,6 +759,9 @@ static int renderThread(void * unused)
|
||||
const uint64_t renderEnd = nanotime();
|
||||
LG_UNLOCK(g_state.lgrLock);
|
||||
|
||||
if (!g_state.jitRender)
|
||||
frameScheduler_observeCadence();
|
||||
|
||||
if (rendererTiming.frameToken != LG_RENDERER_FRAME_TOKEN_NONE)
|
||||
frameTimingFinishRender(
|
||||
&rendererTiming, prepareStart, prepareTime, renderEnd,
|
||||
|
||||
Reference in New Issue
Block a user