From c9c362e16ad30f092ee385cf8ba63b0b518334f0 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Mon, 12 Apr 2021 20:17:10 +0100 Subject: [PATCH] c/multi: Overwrite stale scheduled frames --- src/xrt/compositor/multi/comp_multi_compositor.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/xrt/compositor/multi/comp_multi_compositor.c b/src/xrt/compositor/multi/comp_multi_compositor.c index 587305716..6caa6bf7b 100644 --- a/src/xrt/compositor/multi/comp_multi_compositor.c +++ b/src/xrt/compositor/multi/comp_multi_compositor.c @@ -431,6 +431,13 @@ wait_for_scheduled_free(struct multi_compositor *mc) // Block here if the scheduled slot is not clear. while (mc->scheduled.active) { + + // Replace the scheduled frame if it's in the past. + uint64_t now_ns = os_monotonic_get_ns(); + if (mc->scheduled.display_time_ns < now_ns) { + break; + } + os_mutex_unlock(&mc->slot_lock); os_nanosleep(U_TIME_1MS_IN_NS);