From e4f60e44eecae8e407338818993635de80302981 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Tue, 13 May 2025 19:42:37 -0400 Subject: [PATCH] gstglfiltershader: Free various props before set & during cleanup gst_object_replace() takes a reference so no need to dup object. Part-of: --- .../gst-plugins-base/ext/gl/gstglfiltershader.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/subprojects/gst-plugins-base/ext/gl/gstglfiltershader.c b/subprojects/gst-plugins-base/ext/gl/gstglfiltershader.c index f5ee9785d4..a8c5e87ebb 100644 --- a/subprojects/gst-plugins-base/ext/gl/gstglfiltershader.c +++ b/subprojects/gst-plugins-base/ext/gl/gstglfiltershader.c @@ -188,6 +188,10 @@ gst_gl_filtershader_finalize (GObject * object) { GstGLFilterShader *filtershader = GST_GL_FILTERSHADER (object); + if (filtershader->shader) + gst_object_unref (filtershader->shader); + filtershader->shader = NULL; + g_free (filtershader->vertex); filtershader->vertex = NULL; @@ -211,7 +215,7 @@ gst_gl_filtershader_set_property (GObject * object, guint prop_id, case PROP_SHADER: GST_OBJECT_LOCK (filtershader); gst_object_replace ((GstObject **) & filtershader->shader, - g_value_dup_object (value)); + g_value_get_object (value)); filtershader->new_source = FALSE; GST_OBJECT_UNLOCK (filtershader); break; @@ -284,12 +288,6 @@ gst_gl_filtershader_get_property (GObject * object, guint prop_id, static void gst_gl_filtershader_gl_stop (GstGLBaseFilter * base) { - GstGLFilterShader *filtershader = GST_GL_FILTERSHADER (base); - - if (filtershader->shader) - gst_object_unref (filtershader->shader); - filtershader->shader = NULL; - GST_GL_BASE_FILTER_CLASS (parent_class)->gl_stop (base); }