X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/4dadf1a26a3a9b619f7d91cbc435c7d9429d64d3..04024c2cafab56ea76a9a2b35097584d6db98c06:/lib/alsabg.c diff --git a/lib/alsabg.c b/lib/alsabg.c index 61648f4..be589ce 100644 --- a/lib/alsabg.c +++ b/lib/alsabg.c @@ -179,12 +179,14 @@ static void *alsa_bg_play(void attribute((unused)) *arg) { rframes = snd_pcm_writei(pcm, alsa_bg_buffer + start, nframes); ep(pthread_mutex_lock(&alsa_bg_lock)); if(rframes < 0) { - error(0, "snd_pcm_writei: %d", rframes); switch(rframes) { case -EPIPE: - if((err = snd_pcm_recover(pcm, -EPIPE, 0))) - fatal(0, "snd_pcm_recover: %d", err); + error(0, "underrun detected"); + if((err = snd_pcm_prepare(pcm))) + fatal(0, "snd_pcm_prepare: %d", err); break; + default: + fatal(0, "snd_pcm_writei: %d", rframes); } } else { const int rbytes = rframes * BYTES_PER_FRAME;