mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-29 18:48:44 +00:00
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.
This commit is contained in:
parent
74e9640a22
commit
0760fe8625
1 changed files with 3 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue