mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-24 16:18:16 +00:00
queue: post error message when pausing task
If downstream returns error and upstream has already delivered everything (including EOS) and will no longer be around to find out that we paused (and why), post error message. Fixes #589991.
This commit is contained in:
parent
3f0e4bd6f6
commit
3352c5d970
1 changed files with 14 additions and 1 deletions
|
@ -1159,11 +1159,24 @@ gst_queue_loop (GstPad * pad)
|
|||
/* ERRORS */
|
||||
out_flushing:
|
||||
{
|
||||
gboolean eos = queue->eos;
|
||||
GstFlowReturn ret = queue->srcresult;
|
||||
|
||||
gst_pad_pause_task (queue->srcpad);
|
||||
GST_CAT_LOG_OBJECT (queue_dataflow, queue,
|
||||
"pause task, reason: %s", gst_flow_get_name (queue->srcresult));
|
||||
"pause task, reason: %s", gst_flow_get_name (ret));
|
||||
GST_QUEUE_SIGNAL_DEL (queue);
|
||||
GST_QUEUE_MUTEX_UNLOCK (queue);
|
||||
/* let app know about us giving up if upstream is not expected to do so */
|
||||
/* UNEXPECTED is already taken care of elsewhere */
|
||||
if (eos && (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) &&
|
||||
(ret != GST_FLOW_UNEXPECTED)) {
|
||||
GST_ELEMENT_ERROR (queue, STREAM, FAILED,
|
||||
(_("Internal data flow error.")),
|
||||
("streaming task paused, reason %s (%d)",
|
||||
gst_flow_get_name (ret), ret));
|
||||
gst_pad_push_event (queue->srcpad, gst_event_new_eos ());
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue