From 87ab6c6ea822f9f7b393d1cb83c9f579d728326a Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Sat, 27 Jun 2009 13:32:43 -0500 Subject: [PATCH] make sure that snd_pcm_drop is successful. This was suggested by Kirk Reiser and Chris Brannon. --- alsa.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/alsa.c b/alsa.c index e1174ac..cb74395 100644 --- a/alsa.c +++ b/alsa.c @@ -58,13 +58,20 @@ static int alsa_callback(short *audio, int numsamples, espeak_EVENT * events) int samples_written = 0; int avail; int to_write; + int rc; snd_pcm_state_t state; int user_data_new; pthread_mutex_lock(&audio_mutex); user_data_new = *(int *) events->user_data; if (stop_requested) { - snd_pcm_drop(handle); + rc = snd_pcm_drop(handle); + while(rc < 0) { + fprintf(stderr, "Negative return from snd_pcm_drop!\n"); + /* Try to reset stream. */ + snd_pcm_prepare(handle); + rc = snd_pcm_drop(handle); + } stop_requested = 0; discarding_packets = 1; }