From 991870fa289bf354c5ee4636e9d84543293b1afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Zanelli?= Date: Mon, 16 May 2016 17:36:36 +0200 Subject: [PATCH] audio-source: unref private capsfilter reference on dispose Otherwise a capsfilter reference will be leaked since it has been got using gst_bin_get_by_name. https://bugzilla.gnome.org/show_bug.cgi?id=766524 --- ges/ges-audio-source.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ges/ges-audio-source.c b/ges/ges-audio-source.c index 21ec2b2de3..a52dbf8f2b 100644 --- a/ges/ges-audio-source.c +++ b/ges/ges-audio-source.c @@ -166,14 +166,29 @@ ges_audio_source_create_element (GESTrackElement * trksrc) return topbin; } +static void +ges_audio_source_dispose (GObject * object) +{ + GESAudioSource *self = GES_AUDIO_SOURCE (object); + + if (self->priv->capsfilter) { + gst_object_unref (self->priv->capsfilter); + self->priv->capsfilter = NULL; + } + + G_OBJECT_CLASS (ges_audio_source_parent_class)->dispose (object); +} + static void ges_audio_source_class_init (GESAudioSourceClass * klass) { + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GESTrackElementClass *track_class = GES_TRACK_ELEMENT_CLASS (klass); GESAudioSourceClass *audio_source_class = GES_AUDIO_SOURCE_CLASS (klass); g_type_class_add_private (klass, sizeof (GESAudioSourcePrivate)); + gobject_class->dispose = ges_audio_source_dispose; track_class->nleobject_factorytype = "nlesource"; track_class->create_element = ges_audio_source_create_element; audio_source_class->create_source = NULL;