From 870c6df489238b0ad9ee988ca41e92babc9a8256 Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Thu, 20 Aug 2015 17:30:38 +0100 Subject: [PATCH] decodebin: early out on pad-added when the pad is inactive The pad may be recently deactivated if the element is switched back down very quickly. https://bugzilla.gnome.org/show_bug.cgi?id=752651 --- gst/playback/gstdecodebin2.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c index dfe2ef3..bd02c18 100644 --- a/gst/playback/gstdecodebin2.c +++ b/gst/playback/gstdecodebin2.c @@ -2880,6 +2880,12 @@ pad_added_cb (GstElement * element, GstPad * pad, GstDecodeChain * chain) dbin = chain->dbin; GST_DEBUG_OBJECT (pad, "pad added, chain:%p", chain); + GST_PAD_STREAM_LOCK (pad); + if (!gst_pad_is_active (pad)) { + GST_PAD_STREAM_UNLOCK (pad); + GST_DEBUG_OBJECT (pad, "Ignoring pad-added from a deactivated pad"); + return; + } caps = get_pad_caps (pad); if (analyze_new_pad (dbin, element, pad, caps, chain, &new_chain)) @@ -2900,6 +2906,7 @@ pad_added_cb (GstElement * element, GstPad * pad, GstDecodeChain * chain) GST_DEBUG_OBJECT (dbin, "No decode chain, new pad ignored"); } EXPOSE_UNLOCK (dbin); + GST_PAD_STREAM_UNLOCK (pad); } static GstPadProbeReturn -- 2.7.4