* @brief Background-thread interface to ALSA
*/
-#include <config.h>
+#include "common.h"
#if HAVE_ALSA_ASOUNDLIB_H
-#include "types.h"
-
#include <alsa/asoundlib.h>
#include <pthread.h>
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;