From 5c307e8d17116b82b5c2a925c2526cc8a913bfd5 Mon Sep 17 00:00:00 2001 From: Hugues Fruchet Date: Wed, 14 Jun 2023 11:24:49 +0200 Subject: [PATCH] gtkwaylandsink: do not use drm dumb pool when importing DMAbuf buffers There is no need to use DRM dumb pool if buffer to render is already a DMABuf, just import it and render it. This fixes a DMAbuf memory leakage when waylandsink downstream element exports DMABuf while waylandsink is configured to be DMABuf exporter (drm-device=/drv/dri/card0): gst-launch-1.0 v4l2src io-mode=4 ! gtkwaylandsink drm-device=/dev/dri/card0 leakage identfied with command: watch "cat /sys/kernel/debug/dma_buf/bufinfo | grep attached " Fixes #2729 Part-of: --- .../gst-plugins-bad/ext/gtk/gstgtkwaylandsink.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/subprojects/gst-plugins-bad/ext/gtk/gstgtkwaylandsink.c b/subprojects/gst-plugins-bad/ext/gtk/gstgtkwaylandsink.c index 71d0100eae..8ee077e7e2 100644 --- a/subprojects/gst-plugins-bad/ext/gtk/gstgtkwaylandsink.c +++ b/subprojects/gst-plugins-bad/ext/gtk/gstgtkwaylandsink.c @@ -1192,12 +1192,12 @@ gst_gtk_wayland_sink_show_frame (GstVideoSink * vsink, GstBuffer * buffer) wbuf = gst_wl_linux_dmabuf_construct_wl_buffer (buffer, priv->display, &priv->drm_info); - /* DMABuf did not work, let try and make this a dmabuf, it does not matter - * if it was a SHM since the compositor needs to copy that anyway, and - * offloading the compositor from a copy helps maintaining a smoother - * desktop. - */ - if (!priv->skip_dumb_buffer_copy) { + if (!wbuf && !priv->skip_dumb_buffer_copy) { + /* DMABuf did not work, let try and make this a dmabuf, it does not matter + * if it was a SHM since the compositor needs to copy that anyway, and + * offloading the compositor from a copy helps maintaining a smoother + * desktop. + */ GstVideoFrame src, dst; if (!gst_gtk_wayland_activate_drm_dumb_pool (self)) {