Commit 0760fe86 authored by Sebastian Dröge's avatar Sebastian Dröge 🍵

playsink: Always take the playsink lock when adding or removing pad probes

Otherwise we might end up inside the callback without having stored
the probe id... then try to remove that probe (not!) from the callback
and wait forever for the pad to unblock.
parent 74e9640a
......@@ -4388,6 +4388,8 @@ gst_play_sink_request_pad (GstPlaySink * playsink, GstPlaySinkType type)
* element is 'running' */
gst_pad_set_active (res, TRUE);
gst_element_add_pad (GST_ELEMENT_CAST (playsink), res);
GST_PLAY_SINK_LOCK (playsink);
if (block_id && *block_id == 0) {
GstPad *blockpad =
GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (res)));
......@@ -4403,6 +4405,7 @@ gst_play_sink_request_pad (GstPlaySink * playsink, GstPlaySinkType type)
PENDING_FLAG_SET (playsink, type);
gst_object_unref (blockpad);
}
GST_PLAY_SINK_UNLOCK (playsink);
if (!activate)
gst_pad_set_active (res, activate);
}
......
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