From: Tim-Philipp Müller Date: Sat, 14 Jun 2014 10:31:44 +0000 (+0100) Subject: flowcombiner: keep a ref to the pads we're using X-Git-Tag: 1.3.3~32 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b05eeb9df4f5ea1bb99713d4795c92bd870cf088;p=platform%2Fupstream%2Fgstreamer.git flowcombiner: keep a ref to the pads we're using Needed for use via the boxed type. https://bugzilla.gnome.org/show_bug.cgi?id=731355 --- diff --git a/libs/gst/base/gstflowcombiner.c b/libs/gst/base/gstflowcombiner.c index 7eaa63f..028f6e0 100644 --- a/libs/gst/base/gstflowcombiner.c +++ b/libs/gst/base/gstflowcombiner.c @@ -129,7 +129,11 @@ gst_flow_combiner_unref (GstFlowCombiner * combiner) g_return_if_fail (combiner->ref_count > 0); if (g_atomic_int_dec_and_test (&combiner->ref_count)) { - g_queue_clear (&combiner->pads); + GstPad *pad; + + while ((pad = g_queue_pop_head (&combiner->pads))) + gst_object_unref (pad); + g_slice_free (GstFlowCombiner, combiner); } } @@ -219,7 +223,7 @@ gst_flow_combiner_add_pad (GstFlowCombiner * combiner, GstPad * pad) g_return_if_fail (combiner != NULL); g_return_if_fail (pad != NULL); - g_queue_push_head (&combiner->pads, pad); + g_queue_push_head (&combiner->pads, gst_object_ref (pad)); } /** @@ -237,5 +241,6 @@ gst_flow_combiner_remove_pad (GstFlowCombiner * combiner, GstPad * pad) g_return_if_fail (combiner != NULL); g_return_if_fail (pad != NULL); - g_queue_remove (&combiner->pads, pad); + if (g_queue_remove (&combiner->pads, pad)) + gst_object_unref (pad); }