mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 02:01:12 +00:00
uridecodebin3: fix deadlock when switching input item
There was a race between urisourcebin src pad handlers. One was starting the next item before the other was blocked. See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3297#note_2288799 for details. Fix #3297 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6145>
This commit is contained in:
parent
eb17de27d6
commit
d972acd3c5
1 changed files with 4 additions and 1 deletions
|
@ -1356,7 +1356,10 @@ uri_src_block_probe (GstPad * pad, GstPadProbeInfo * info,
|
||||||
}
|
}
|
||||||
|
|
||||||
PLAY_ITEMS_LOCK (handler->uridecodebin);
|
PLAY_ITEMS_LOCK (handler->uridecodebin);
|
||||||
if (play_item_is_eos (handler->uridecodebin->input_item)) {
|
if (srcpad->block_probe_id == 0) {
|
||||||
|
GST_DEBUG_OBJECT (pad, "pad has already been unblocked");
|
||||||
|
ret = GST_PAD_PROBE_REMOVE;
|
||||||
|
} else if (play_item_is_eos (handler->uridecodebin->input_item)) {
|
||||||
GST_DEBUG_OBJECT (handler->uridecodebin,
|
GST_DEBUG_OBJECT (handler->uridecodebin,
|
||||||
"We can switch over to the next input item");
|
"We can switch over to the next input item");
|
||||||
switch_and_activate_input_locked (handler->uridecodebin,
|
switch_and_activate_input_locked (handler->uridecodebin,
|
||||||
|
|
Loading…
Reference in a new issue