ext/pulse/pulseprobe.c: Fix refcount loop, resulting in a thread leak. Fixes bug...
authorLennart Poettering <lennart@poettering.net>
Wed, 14 Jan 2009 15:37:07 +0000 (15:37 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Wed, 14 Jan 2009 15:37:07 +0000 (15:37 +0000)
Original commit message from CVS:
Patch by: Lennart Poettering <lennart at poettering dot net>
* ext/pulse/pulseprobe.c: (gst_pulseprobe_new),
(gst_pulseprobe_free):
Fix refcount loop, resulting in a thread leak. Fixes bug #567746.

ChangeLog
ext/pulse/pulseprobe.c

index 284c8f2..5437ff9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2009-01-14  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
 
+       Patch by: Lennart Poettering <lennart at poettering dot net>
+
+       * ext/pulse/pulseprobe.c: (gst_pulseprobe_new),
+       (gst_pulseprobe_free):
+       Fix refcount loop, resulting in a thread leak. Fixes bug #567746.
+
+2009-01-14  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
        * gst/spectrum/Makefile.am:
        * gst/spectrum/README:
        * gst/spectrum/gstspectrum.c: (gst_spectrum_base_init),
index a25585b..59a250b 100644 (file)
@@ -263,7 +263,7 @@ gst_pulseprobe_new (GObject * object, GObjectClass * klass, guint prop_id,
   GstPulseProbe *c = NULL;
 
   c = g_new (GstPulseProbe, 1);
-  c->object = g_object_ref (object);
+  c->object = object;           /* We don't inc the ref counter here to avoid a ref loop */
   c->server = g_strdup (server);
   c->enumerate_sinks = sinks;
   c->enumerate_sources = sources;
@@ -293,8 +293,6 @@ gst_pulseprobe_free (GstPulseProbe * c)
   g_list_foreach (c->devices, (GFunc) g_free, NULL);
   g_list_free (c->devices);
 
-  g_object_unref (c->object);
-
   g_free (c);
 }