From be7ba5ac510394303082524249cf94f8b262de9b Mon Sep 17 00:00:00 2001 From: Hou Qi Date: Wed, 17 Apr 2024 18:37:30 +0900 Subject: [PATCH] wlwindow: free staged buffer when do gst_wl_window_finalize If waylandsink received buffer rate is high which causes frame drop, the cached staged buffer will be replaced when next buffer needs to be rendered and be freed after redraw. But there is chance to get memory leak if ended without redraw. So need to free staged buffer when do gst_wl_window_finalize(). Part-of: --- subprojects/gst-plugins-bad/gst-libs/gst/wayland/gstwlwindow.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/wayland/gstwlwindow.c b/subprojects/gst-plugins-bad/gst-libs/gst/wayland/gstwlwindow.c index acd94bae66..8a60b143a6 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/wayland/gstwlwindow.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/wayland/gstwlwindow.c @@ -196,6 +196,9 @@ gst_wl_window_finalize (GObject * gobject) gst_wl_display_callback_destroy (priv->display, &priv->frame_callback); gst_wl_display_callback_destroy (priv->display, &priv->commit_callback); + if (priv->staged_buffer) + gst_wl_buffer_unref_buffer (priv->staged_buffer); + g_cond_clear (&priv->configure_cond); g_mutex_clear (&priv->configure_mutex); g_mutex_clear (&priv->window_lock);