From 70bbf180bee034cd3d8aaf39389aa72235d656be Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Thu, 1 Oct 2026 08:32:24 +1000 Subject: [PATCH] [idd] transport: publish frame routes after ready --- idd/LGIdd/transport/CTransportManager.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/idd/LGIdd/transport/CTransportManager.cpp b/idd/LGIdd/transport/CTransportManager.cpp index 9fbccc46..30ddd3b7 100644 --- a/idd/LGIdd/transport/CTransportManager.cpp +++ b/idd/LGIdd/transport/CTransportManager.cpp @@ -713,7 +713,11 @@ bool CTransportManager::AddServices(Entry& entry) if (frameBound) { m_tex.Rebind(id, epoch); - BumpFrameRev(); + CSRWSharedLock entryLock(entry.lock); + // A newly initialized entry is published after AddServices returns. + // Bumping earlier can let the frame graph permanently omit the route. + if (entry.state == State::READY) + BumpFrameRev(); } const bool servicesReady = @@ -902,8 +906,14 @@ bool CTransportManager::SetupEntry(Entry& entry, size_t alignment) return false; } - CSRWExclusiveLock entryLock(entry.lock); - entry.state = State::READY; + bool frameReady; + { + CSRWExclusiveLock entryLock(entry.lock); + frameReady = entry.state != State::READY && entry.frameAdded; + entry.state = State::READY; + } + if (frameReady) + BumpFrameRev(); return true; }