uriplaylistbin: handle waiting items no longer being set

ab96219c19 broke some assertions as
waiting items are now unset when shutting down the element.
This commit is contained in:
Guillaume Desmottes 2022-03-28 12:47:53 +02:00
parent 518e43fc5f
commit 5dab4bc502

View file

@ -1232,7 +1232,10 @@ impl UriPlaylistBin {
return; return;
} }
let item = state.waiting_for_pads.clone().unwrap(); let item = match state.waiting_for_pads.as_ref() {
Some(item) => item.clone(),
None => return, // element is being shutdown
};
// Parse the pad name to extract the stream type and its index. // Parse the pad name to extract the stream type and its index.
// We could get the type from the Stream object from the StreamStart sticky event but we'd still have // We could get the type from the Stream object from the StreamStart sticky event but we'd still have
@ -1529,7 +1532,11 @@ impl UriPlaylistBin {
let mut state_guard = self.state.lock().unwrap(); let mut state_guard = self.state.lock().unwrap();
let state = state_guard.as_mut().unwrap(); let state = state_guard.as_mut().unwrap();
let item = state.waiting_for_ss_eos.take().unwrap(); let item = match state.waiting_for_ss_eos.take() {
Some(item) => item,
None => return, // element is being shutdown
};
let (topology, pending_pads, sender) = item.done_waiting_for_ss_eos(); let (topology, pending_pads, sender) = item.done_waiting_for_ss_eos();
state.waiting_for_pads = Some(item); state.waiting_for_pads = Some(item);