projects
/
gst-aseq-appsrc.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make feed_data more robust
[gst-aseq-appsrc.git]
/
gst-aseq-appsrc.c
diff --git
a/gst-aseq-appsrc.c
b/gst-aseq-appsrc.c
index
7c42ab4
..
4988dc2
100644
(file)
--- a/
gst-aseq-appsrc.c
+++ b/
gst-aseq-appsrc.c
@@
-222,14
+222,18
@@
feed_data (GstElement * appsrc, guint size, App * app)
ret = poll (app->pfds, app->npfds, DEFAULT_POLL_TIMEOUT_MS);
if (ret < 0) {
GST_ERROR ("ERROR in poll: %s", strerror (errno));
ret = poll (app->pfds, app->npfds, DEFAULT_POLL_TIMEOUT_MS);
if (ret < 0) {
GST_ERROR ("ERROR in poll: %s", strerror (errno));
+ gst_app_src_end_of_stream (GST_APP_SRC (appsrc));
} else if (ret == 0) {
push_tick_buffer (app);
} else {
do {
snd_seq_event_t *event;
err = snd_seq_event_input (app->seq, &event);
} else if (ret == 0) {
push_tick_buffer (app);
} else {
do {
snd_seq_event_t *event;
err = snd_seq_event_input (app->seq, &event);
- if (err < 0)
+ if (err < 0 && err != -EAGAIN) {
+ GST_ERROR ("Error in snd_seq_event_input: %s", snd_strerror (err));
+ gst_app_src_end_of_stream (GST_APP_SRC (appsrc));
break;
break;
+ }
if (event) {
size_ev =
snd_midi_event_decode (app->parser, app->buffer, DEFAULT_BUFSIZE,
if (event) {
size_ev =
snd_midi_event_decode (app->parser, app->buffer, DEFAULT_BUFSIZE,
@@
-242,6
+246,7
@@
feed_data (GstElement * appsrc, guint size, App * app)
} else {
GST_ERROR ("Error decoding event from ALSA to output: %s",
strerror (-size_ev));
} else {
GST_ERROR ("Error decoding event from ALSA to output: %s",
strerror (-size_ev));
+ gst_app_src_end_of_stream (GST_APP_SRC (appsrc));
break;
}
} else {
break;
}
} else {