From 05fe4f1dd8472602c9db67dbcefe3d65aec24d15 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Thu, 6 Aug 2026 16:40:06 +1000 Subject: [PATCH] [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. --- idd/LGIdd/CIndirectDeviceContext.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/idd/LGIdd/CIndirectDeviceContext.cpp b/idd/LGIdd/CIndirectDeviceContext.cpp index 57294ef7..20da8e6e 100644 --- a/idd/LGIdd/CIndirectDeviceContext.cpp +++ b/idd/LGIdd/CIndirectDeviceContext.cpp @@ -1502,9 +1502,11 @@ CIndirectDeviceContext::PostSharedFrame(unsigned frameIndex, m_frameDelivery[frameIndex].sharedOwnerClientID = 0; m_frameDelivery[frameIndex].sharedOwnerPending = false; m_frameDelivery[frameIndex].sharedPending = true; - if (postedCount == targetCount) - m_frameScheduler.FrameDelivered( - recipients, targetCount, frameSerial, now); + // LGMP returns only the number of matching subscribers. Account the full + // snapshot: disappeared client IDs are harmless, while every surviving + // target received this post. + m_frameScheduler.FrameDelivered( + recipients, targetCount, frameSerial, now); return SHARED_FRAME_POSTED; }