From d849340e64da653d3f18d04713902d90c3d555b8 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 9 Apr 2009 14:38:17 +0200 Subject: pulsesink: handle write errors --- ext/pulse/pulsesink.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'ext') 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 -- cgit