From fa6615dd70813afd890fb055bbb3928b5545392b Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 7 Jun 2011 10:51:23 +0200 Subject: [PATCH] outputselector: fix refcounting of events _pad_event_forward() takes ownership of the caps. --- plugins/elements/gstoutputselector.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/plugins/elements/gstoutputselector.c b/plugins/elements/gstoutputselector.c index 7964c39..e8536be 100644 --- a/plugins/elements/gstoutputselector.c +++ b/plugins/elements/gstoutputselector.c @@ -538,9 +538,10 @@ gst_output_selector_handle_sink_event (GstPad * pad, GstEvent * event) switch (sel->pad_negotiation_mode) { case GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_ALL: /* Send caps to all src pads */ - gst_pad_event_forward (pad, event); + res = gst_pad_event_forward (pad, event); break; case GST_OUTPUT_SELECTOR_PAD_NEGOTIATION_MODE_NONE: + gst_event_unref (event); break; default: GST_OBJECT_LOCK (sel); @@ -551,12 +552,13 @@ gst_output_selector_handle_sink_event (GstPad * pad, GstEvent * event) GST_OBJECT_UNLOCK (sel); if (active) { - res = gst_pad_push_event (active, gst_event_ref (event)); + res = gst_pad_push_event (active, event); gst_object_unref (active); + } else { + gst_event_unref (event); } break; } - gst_event_unref (event); break; } case GST_EVENT_SEGMENT: @@ -585,10 +587,11 @@ gst_output_selector_handle_sink_event (GstPad * pad, GstEvent * event) /* Send other events to pending or active src pad */ if (active) { - res = gst_pad_push_event (active, gst_event_ref (event)); + res = gst_pad_push_event (active, event); gst_object_unref (active); + } else { + gst_event_unref (event); } - gst_event_unref (event); break; } } -- 2.7.4