diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | ext/timidity/gsttimidity.c | 23 | ||||
-rw-r--r-- | ext/timidity/gstwildmidi.c | 23 | ||||
-rw-r--r-- | gst/tta/gstttaparse.c | 7 |
4 files changed, 42 insertions, 19 deletions
@@ -1,3 +1,11 @@ +2007-06-08 Tim-Philipp Müller <tim at centricular dot net> + + * ext/timidity/gsttimidity.c: (gst_timidity_loop): + * ext/timidity/gstwildmidi.c: (gst_wildmidi_loop): + * gst/tta/gstttaparse.c: (gst_tta_parse_loop): + When driving the pipeline, also post an error when we get a + not-linked flow return from downstream. + 2007-06-08 Jan Schmidt <thaytan@mad.scientist.com> * docs/plugins/gst-plugins-bad-plugins.args: diff --git a/ext/timidity/gsttimidity.c b/ext/timidity/gsttimidity.c index 8b8ed316..06541f2e 100644 --- a/ext/timidity/gsttimidity.c +++ b/ext/timidity/gsttimidity.c @@ -697,18 +697,25 @@ gst_timidity_loop (GstPad * sinkpad) gst_buffer_set_caps (out, timidity->out_caps); ret = gst_pad_push (timidity->srcpad, out); - if (ret == GST_FLOW_OK) - return; + if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) + goto error; + + return; - if (GST_FLOW_IS_FATAL (ret)) { +paused: + { + GST_DEBUG_OBJECT (timidity, "pausing task"); + gst_pad_pause_task (timidity->sinkpad); + return; + } +error: + { GST_ELEMENT_ERROR (timidity, STREAM, FAILED, - ("Internal data stream error XXX"), + ("Internal data stream error"), ("Streaming stopped, reason %s", gst_flow_get_name (ret))); + gst_pad_push_event (timidity->srcpad, gst_event_new_eos ()); + goto paused; } - -paused: - GST_LOG_OBJECT (timidity, "pausing task"); - gst_pad_pause_task (timidity->sinkpad); } static GstStateChangeReturn diff --git a/ext/timidity/gstwildmidi.c b/ext/timidity/gstwildmidi.c index 9d830298..2ef80db1 100644 --- a/ext/timidity/gstwildmidi.c +++ b/ext/timidity/gstwildmidi.c @@ -672,18 +672,25 @@ gst_wildmidi_loop (GstPad * sinkpad) gst_buffer_set_caps (out, wildmidi->out_caps); ret = gst_pad_push (wildmidi->srcpad, out); - if (ret == GST_FLOW_OK) - return; + if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) + goto error; + + return; - if (GST_FLOW_IS_FATAL (ret)) { +paused: + { + GST_DEBUG_OBJECT (wildmidi, "pausing task"); + gst_pad_pause_task (wildmidi->sinkpad); + return; + } +error: + { GST_ELEMENT_ERROR (wildmidi, STREAM, FAILED, - ("Internal data stream error XXX"), + ("Internal data stream error"), ("Streaming stopped, reason %s", gst_flow_get_name (ret))); + gst_pad_push_event (wildmidi->srcpad, gst_event_new_eos ()); + goto paused; } - -paused: - GST_LOG_OBJECT (wildmidi, "pausing task"); - gst_pad_pause_task (wildmidi->sinkpad); } static GstStateChangeReturn diff --git a/gst/tta/gstttaparse.c b/gst/tta/gstttaparse.c index efbd4ce6..c9efbe56 100644 --- a/gst/tta/gstttaparse.c +++ b/gst/tta/gstttaparse.c @@ -464,11 +464,12 @@ gst_tta_parse_loop (GstTtaParse * ttaparse) return; pause: - GST_LOG_OBJECT (ttaparse, "pausing task %d", ret); + GST_LOG_OBJECT (ttaparse, "pausing task, %s", gst_flow_get_name (ret)); gst_pad_pause_task (ttaparse->sinkpad); - if (GST_FLOW_IS_FATAL (ret)) { + if (GST_FLOW_IS_FATAL (ret) || ret == GST_FLOW_NOT_LINKED) { GST_ELEMENT_ERROR (ttaparse, STREAM, FAILED, - ("Internal data stream error."), ("streaming stopped, reason %d", ret)); + ("Internal data stream error."), + ("streaming stopped, reason %s", gst_flow_get_name (ret))); gst_pad_push_event (ttaparse->srcpad, gst_event_new_eos ()); } } |