From a2b0229058c86c008f5918706e69f5a44d65474e Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Fri, 30 Jan 2009 10:38:17 -0800 Subject: [PATCH] Unref pads when iterating over them in analyse_source. Fixes leak of source's srcpad when using uridecodebin. --- gst/playback/gsturidecodebin.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gst/playback/gsturidecodebin.c b/gst/playback/gsturidecodebin.c index ab34236f12..a030214133 100644 --- a/gst/playback/gsturidecodebin.c +++ b/gst/playback/gsturidecodebin.c @@ -943,12 +943,15 @@ analyse_source (GstURIDecodeBin * decoder, gboolean * is_raw, *have_out = TRUE; /* if FALSE, this pad has no caps and we continue with the next pad. */ - if (!has_all_raw_caps (pad, is_raw)) + if (!has_all_raw_caps (pad, is_raw)) { + gst_object_unref (pad); break; + } /* caps on source pad are all raw, we can add the pad */ if (*is_raw) new_decoded_pad_cb (decoder->source, pad, FALSE, decoder); + gst_object_unref (pad); break; } } @@ -1569,6 +1572,7 @@ decoder_query_duration_fold (GstPad * item, GValue * ret, QueryFold * fold) gst_object_unref (item); return TRUE; } + static void decoder_query_duration_done (GstURIDecodeBin * dec, QueryFold * fold) { @@ -1600,6 +1604,7 @@ decoder_query_position_fold (GstPad * item, GValue * ret, QueryFold * fold) gst_object_unref (item); return TRUE; } + static void decoder_query_position_done (GstURIDecodeBin * dec, QueryFold * fold) { @@ -1642,6 +1647,7 @@ decoder_query_latency_fold (GstPad * item, GValue * ret, QueryFold * fold) gst_object_unref (item); return TRUE; } + static void decoder_query_latency_done (GstURIDecodeBin * dec, QueryFold * fold) { @@ -1673,6 +1679,7 @@ decoder_query_seeking_fold (GstPad * item, GValue * ret, QueryFold * fold) return TRUE; } + static void decoder_query_seeking_done (GstURIDecodeBin * dec, QueryFold * fold) {