···228228void
229229multi_compositor_latch_frame_locked(struct multi_compositor *mc, uint64_t when_ns, int64_t system_frame_id);
230230231231+/*!
232232+ * Clears and retires the delivered frame, called by the render thread.
233233+ * The list_and_timing_lock is held when this function is called.
234234+ *
235235+ * @ingroup comp_multi
236236+ * @private @memberof multi_compositor
237237+ */
238238+void
239239+multi_compositor_retire_delivered_locked(struct multi_compositor *mc, uint64_t when_ns);
240240+231241232242/*
233243 *
+5
src/xrt/compositor/multi/comp_multi_system.c
···257257258258 // The client isn't visible, do not submit it's layers.
259259 if (!mc->state.visible) {
260260+ // Need to drop delivered frame as it shouldn't be reused.
261261+ multi_compositor_retire_delivered_locked(mc, now_ns);
260262 continue;
261263 }
262264263265 // Just in case.
264266 if (!mc->state.session_active) {
265267 U_LOG_W("Session is visible but not active.");
268268+269269+ // Need to drop delivered frame as it shouldn't be reused.
270270+ multi_compositor_retire_delivered_locked(mc, now_ns);
266271 continue;
267272 }
268273