diff --git a/src/xrt/compositor/multi/comp_multi_compositor.c b/src/xrt/compositor/multi/comp_multi_compositor.c index ea9991616..354d85864 100644 --- a/src/xrt/compositor/multi/comp_multi_compositor.c +++ b/src/xrt/compositor/multi/comp_multi_compositor.c @@ -445,8 +445,25 @@ static void wait_fence(struct xrt_compositor_fence **xcf_ptr) { COMP_TRACE_MARKER(); - xrt_compositor_fence_wait(*xcf_ptr, UINT64_MAX); + xrt_result_t ret = XRT_SUCCESS; + + // 100ms + uint64_t timeout_ns = 100 * U_TIME_1MS_IN_NS; + + do { + ret = xrt_compositor_fence_wait(*xcf_ptr, timeout_ns); + if (ret != XRT_TIMEOUT) { + break; + } + + U_LOG_W("Waiting on client fence timed out > 100ms!"); + } while (true); + xrt_compositor_fence_destroy(xcf_ptr); + + if (ret != XRT_SUCCESS) { + U_LOG_E("Fence waiting failed!"); + } } static void