summaryrefslogtreecommitdiffstats
path: root/ext
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-04-09 14:38:17 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2009-04-09 17:26:20 +0200
commitd849340e64da653d3f18d04713902d90c3d555b8 (patch)
tree5476edd55b53ee730c969e20cf80afc345ecd30f /ext
parent81c5fb9e48fd08b463015e9dd91aebc58b5c4f03 (diff)
pulsesink: handle write errors
Diffstat (limited to 'ext')
-rw-r--r--ext/pulse/pulsesink.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c
index 1e65bd89..be3da445 100644
--- a/ext/pulse/pulsesink.c
+++ b/ext/pulse/pulsesink.c
@@ -480,7 +480,7 @@ gst_pulsering_underflow_cb (pa_stream * s, void *userdata)
pbuf = GST_PULSERING_BUFFER_CAST (userdata);
psink = GST_PULSESINK_CAST (GST_OBJECT_PARENT (pbuf));
- GST_LOG_OBJECT (psink, "got underflow");
+ GST_WARNING_OBJECT (psink, "got underflow");
if ((avail = pa_stream_writable_size (pbuf->stream)) > 0) {
guint segsize, towrite;
@@ -493,11 +493,22 @@ gst_pulsering_underflow_cb (pa_stream * s, void *userdata)
while (avail > 0) {
towrite = MIN (avail, segsize);
- pa_stream_write (pbuf->stream, rbuf->empty_seg, towrite,
- NULL, 0, PA_SEEK_RELATIVE);
+ if (pa_stream_write (pbuf->stream, rbuf->empty_seg, towrite,
+ NULL, 0, PA_SEEK_RELATIVE) < 0)
+ goto write_failed;
avail -= towrite;
}
}
+ return;
+
+ /* ERRORS */
+write_failed:
+ {
+ GST_ELEMENT_ERROR (psink, RESOURCE, FAILED,
+ ("pa_stream_write() failed: %s",
+ pa_strerror (pa_context_errno (pbuf->context))), (NULL));
+ return;
+ }
}
static void