~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use snd_pcm_prepare() instead of snd_pcm_recover(), since the latter
[disorder]
/
lib
/
alsabg.c
diff --git
a/lib/alsabg.c
b/lib/alsabg.c
index
61648f4
..
be589ce
100644
(file)
--- 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) {
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:
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;
break;
+ default:
+ fatal(0, "snd_pcm_writei: %d", rframes);
}
} else {
const int rbytes = rframes * BYTES_PER_FRAME;
}
} else {
const int rbytes = rframes * BYTES_PER_FRAME;