summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--ext/timidity/gsttimidity.c23
-rw-r--r--ext/timidity/gstwildmidi.c23
-rw-r--r--gst/tta/gstttaparse.c7
4 files changed, 42 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index 3c544f78..fc4a40d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 ());
}
}