appsrc: Fix memory leak with callback notify not being called in dispose
authorYouness Alaoui <kakaroto@kakaroto.homelinux.net>
Sat, 19 Jul 2014 01:19:03 +0000 (21:19 -0400)
committerSebastian Dröge <sebastian@centricular.com>
Sat, 19 Jul 2014 12:38:36 +0000 (14:38 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=733386

gst-libs/gst/app/gstappsrc.c

index d529bfd..aeefdb8 100644 (file)
@@ -544,10 +544,18 @@ gst_app_src_dispose (GObject * obj)
   GstAppSrc *appsrc = GST_APP_SRC_CAST (obj);
   GstAppSrcPrivate *priv = appsrc->priv;
 
+  GST_OBJECT_LOCK (appsrc);
   if (priv->caps) {
     gst_caps_unref (priv->caps);
     priv->caps = NULL;
   }
+  if (priv->notify) {
+    priv->notify (priv->user_data);
+  }
+  priv->user_data = NULL;
+  priv->notify = NULL;
+
+  GST_OBJECT_UNLOCK (appsrc);
   gst_app_src_flush_queued (appsrc);
 
   G_OBJECT_CLASS (parent_class)->dispose (obj);