From 4de2655f08e9a88f1ac6b4b305bb320f72364be8 Mon Sep 17 00:00:00 2001 From: Detlev Casanova Date: Tue, 26 May 2026 14:43:57 -0400 Subject: [PATCH] renderer-gl: Also set dmabuf.rb when creating render buffer gl_fbo_image_init() allocates and returns a renderbuffer through its rb argument. If it is not set in the dmabuf.rb field, gl_fbo_fini() will not be able to release it and DMA buffers can start leaking. This is usually not an issue because the DMA buffers are released when Weston closes, but in the case of the pipewire output, the buffers are allocated when a pipewire client connects and freed when the client disconnects. In that situation, dangling DMA buffers can be observed because of the unfreed render buffer (rb). Signed-off-by: Detlev Casanova --- libweston/renderer-gl/gl-renderer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c index 2c385c827..aebf926ee 100644 --- a/libweston/renderer-gl/gl-renderer.c +++ b/libweston/renderer-gl/gl-renderer.c @@ -1064,6 +1064,7 @@ gl_renderer_create_renderbuffer_dmabuf(struct weston_output *output, renderbuffer = xzalloc(sizeof(*renderbuffer)); renderbuffer->dmabuf.gr = gr; + renderbuffer->dmabuf.rb = rb; renderbuffer->dmabuf.memory = dmabuf; renderbuffer->dmabuf.image = image; gl_renderbuffer_init(renderbuffer, RENDERBUFFER_DMABUF, fb,