From a9398bdeb413f8c9b88178756e0cdc7ede55b0bc Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Fri, 26 Jun 2009 23:11:15 -0500 Subject: [PATCH] Added another error check for alsa --- alsa.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/alsa.c b/alsa.c index 8b967e8..ef0a4cf 100644 --- a/alsa.c +++ b/alsa.c @@ -74,8 +74,13 @@ static int alsa_callback(short *audio, int numsamples, espeak_EVENT * events) while (numsamples > 0) { avail = snd_pcm_avail_update(handle); - if (avail <= 0) + if (avail == 0) continue; + if(avail < 0) { + /* Apparently this also can fail on buffer underrun. */ + snd_pcm_prepare(handle); + continue; + } to_write = minimum(avail, numsamples); samples_written = snd_pcm_writei(handle, audio, to_write); if (samples_written < 0) {