Commit 001c7f04 authored by Sebastian Dröge's avatar Sebastian Dröge

decodebin: Don't hold EXPOSE_LOCK in type_found() outside the stream lock

In other places we lock it the other way around, leading to possible
deadlocks. Also this will deadlock if analyze_pad() causes a new element to be
autoplugged that adds new pads on itself when its state is changed.

https://bugzilla.gnome.org/show_bug.cgi?id=763491
parent 0a434e9c
......@@ -2841,7 +2841,6 @@ type_found (GstElement * typefind, guint probability,
goto exit;
}
EXPOSE_LOCK (decode_bin);
pad = gst_element_get_static_pad (typefind, "src");
sink_pad = gst_element_get_static_pad (typefind, "sink");
......@@ -2862,17 +2861,15 @@ type_found (GstElement * typefind, guint probability,
if (analyze_new_pad (decode_bin, typefind, pad, caps,
decode_bin->decode_chain, NULL))
expose_pad (decode_bin, typefind, decode_bin->decode_chain->current_pad,
pad, caps, decode_bin->decode_chain, FALSE);
pad, caps, decode_bin->decode_chain, TRUE);
gst_decode_chain_unref (chain);
}
GST_PAD_STREAM_UNLOCK (sink_pad);
gst_object_unref (sink_pad);
gst_object_unref (pad);
EXPOSE_UNLOCK (decode_bin);
exit:
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment