decodebin: expose_pad() is always called with lock==TRUE, simplify code

This basically reverts ee44337fc3 .

https://bugzilla.gnome.org/show_bug.cgi?id=763491
This commit is contained in:
Sebastian Dröge 2016-03-12 19:47:47 +02:00
parent 65d09c1495
commit 916746e731

View file

@ -1458,8 +1458,7 @@ static gboolean connect_pad (GstDecodeBin * dbin, GstElement * src,
static GList *connect_element (GstDecodeBin * dbin, GstDecodeElement * delem, static GList *connect_element (GstDecodeBin * dbin, GstDecodeElement * delem,
GstDecodeChain * chain); GstDecodeChain * chain);
static void expose_pad (GstDecodeBin * dbin, GstElement * src, static void expose_pad (GstDecodeBin * dbin, GstElement * src,
GstDecodePad * dpad, GstPad * pad, GstCaps * caps, GstDecodeChain * chain, GstDecodePad * dpad, GstPad * pad, GstCaps * caps, GstDecodeChain * chain);
gboolean lock);
static void pad_added_cb (GstElement * element, GstPad * pad, static void pad_added_cb (GstElement * element, GstPad * pad,
GstDecodeChain * chain); GstDecodeChain * chain);
@ -2244,7 +2243,7 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad,
case GST_AUTOPLUG_SELECT_EXPOSE: case GST_AUTOPLUG_SELECT_EXPOSE:
GST_DEBUG_OBJECT (dbin, "autoplug select requested expose"); GST_DEBUG_OBJECT (dbin, "autoplug select requested expose");
/* expose the pad, we don't have the source element */ /* expose the pad, we don't have the source element */
expose_pad (dbin, src, dpad, pad, caps, chain, TRUE); expose_pad (dbin, src, dpad, pad, caps, chain);
res = TRUE; res = TRUE;
goto beach; goto beach;
case GST_AUTOPLUG_SELECT_SKIP: case GST_AUTOPLUG_SELECT_SKIP:
@ -2598,7 +2597,7 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad,
ocaps = get_pad_caps (expose_data->pad); ocaps = get_pad_caps (expose_data->pad);
expose_pad (dbin, delem->element, expose_data->chain->current_pad, expose_pad (dbin, delem->element, expose_data->chain->current_pad,
expose_data->pad, ocaps, expose_data->chain, TRUE); expose_data->pad, ocaps, expose_data->chain);
if (ocaps) if (ocaps)
gst_caps_unref (ocaps); gst_caps_unref (ocaps);
@ -2739,7 +2738,7 @@ connect_element (GstDecodeBin * dbin, GstDecodeElement * delem,
*/ */
static void static void
expose_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, expose_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad,
GstPad * pad, GstCaps * caps, GstDecodeChain * chain, gboolean lock) GstPad * pad, GstCaps * caps, GstDecodeChain * chain)
{ {
GstPad *mqpad = NULL; GstPad *mqpad = NULL;
@ -2766,15 +2765,13 @@ expose_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad,
chain->endpad = gst_object_ref (dpad); chain->endpad = gst_object_ref (dpad);
chain->endcaps = gst_caps_ref (caps); chain->endcaps = gst_caps_ref (caps);
if (lock) EXPOSE_LOCK (dbin);
EXPOSE_LOCK (dbin);
if (dbin->decode_chain) { if (dbin->decode_chain) {
if (gst_decode_chain_is_complete (dbin->decode_chain)) { if (gst_decode_chain_is_complete (dbin->decode_chain)) {
gst_decode_bin_expose (dbin); gst_decode_bin_expose (dbin);
} }
} }
if (lock) EXPOSE_UNLOCK (dbin);
EXPOSE_UNLOCK (dbin);
if (mqpad) if (mqpad)
gst_object_unref (mqpad); gst_object_unref (mqpad);
@ -2861,7 +2858,7 @@ type_found (GstElement * typefind, guint probability,
if (analyze_new_pad (decode_bin, typefind, pad, caps, if (analyze_new_pad (decode_bin, typefind, pad, caps,
decode_bin->decode_chain, NULL)) decode_bin->decode_chain, NULL))
expose_pad (decode_bin, typefind, decode_bin->decode_chain->current_pad, expose_pad (decode_bin, typefind, decode_bin->decode_chain->current_pad,
pad, caps, decode_bin->decode_chain, TRUE); pad, caps, decode_bin->decode_chain);
gst_decode_chain_unref (chain); gst_decode_chain_unref (chain);
} }
@ -2925,8 +2922,7 @@ pad_added_cb (GstElement * element, GstPad * pad, GstDecodeChain * chain)
caps = get_pad_caps (pad); caps = get_pad_caps (pad);
if (analyze_new_pad (dbin, element, pad, caps, chain, &new_chain)) if (analyze_new_pad (dbin, element, pad, caps, chain, &new_chain))
expose_pad (dbin, element, new_chain->current_pad, pad, caps, new_chain, expose_pad (dbin, element, new_chain->current_pad, pad, caps, new_chain);
TRUE);
if (caps) if (caps)
gst_caps_unref (caps); gst_caps_unref (caps);