[idd] scheduler: account partial shared delivery

Record every requested recipient after LGMP posts to at least one live
subscriber. Targets that disappeared during the post are harmless, while
surviving targets must advance instead of remaining perpetually due.
This commit is contained in:
Geoffrey McRae
2026-08-06 16:40:06 +10:00
parent eaf8de5e1d
commit 05fe4f1dd8

View File

@@ -1502,9 +1502,11 @@ CIndirectDeviceContext::PostSharedFrame(unsigned frameIndex,
m_frameDelivery[frameIndex].sharedOwnerClientID = 0; m_frameDelivery[frameIndex].sharedOwnerClientID = 0;
m_frameDelivery[frameIndex].sharedOwnerPending = false; m_frameDelivery[frameIndex].sharedOwnerPending = false;
m_frameDelivery[frameIndex].sharedPending = true; m_frameDelivery[frameIndex].sharedPending = true;
if (postedCount == targetCount) // LGMP returns only the number of matching subscribers. Account the full
m_frameScheduler.FrameDelivered( // snapshot: disappeared client IDs are harmless, while every surviving
recipients, targetCount, frameSerial, now); // target received this post.
m_frameScheduler.FrameDelivered(
recipients, targetCount, frameSerial, now);
return SHARED_FRAME_POSTED; return SHARED_FRAME_POSTED;
} }