From 636e55db0d40086a01123a0514c3b145f98ffa46 Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Mon, 17 Aug 2026 01:27:26 +1000 Subject: [PATCH] [client] egl: drop incomplete frames --- client/renderers/EGL/desktop.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/client/renderers/EGL/desktop.c b/client/renderers/EGL/desktop.c index e7608d2f..92d73f07 100644 --- a/client/renderers/EGL/desktop.c +++ b/client/renderers/EGL/desktop.c @@ -386,6 +386,20 @@ bool egl_desktopUpdate(EGL_Desktop * desktop, const FrameBuffer * frame, uint64_t * waitTimeNs, LG_FrameReleaseFn releaseFn, void * releaseOpaque, uint64_t releaseHandle) { + /* + * Both the DMA and staged upload paths need a complete frame. Do this + * before selecting either path so a producer that is still filling an + * indirect frame cannot be mistaken for a broken DMA import. Retain the + * last image and release a direct frame lease when there is one. + */ + if (unlikely(!framebuffer_wait_timed( + frame, desktop->texture->format.dataSize, waitTimeNs))) + { + if (releaseFn) + releaseFn(releaseOpaque, releaseHandle); + return true; + } + if (likely(desktop->useDMA && dmaFd >= 0)) { if (likely(egl_textureUpdateFromDMA(