summaryrefslogtreecommitdiff
path: root/palsa.c
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2009-08-21 21:02:01 +0200
committerGravatar waker <wakeroid@gmail.com>2009-08-21 21:02:01 +0200
commitded20935eac98983cb4412ba6a867cf92b6ec1d8 (patch)
tree43f699cf6a1449f0b11516f5c6eed168218e6b87 /palsa.c
parent1d43ce00d5081c8a9cda7767e70c81de9a39cd92 (diff)
fixed alsa snd_pcm_writei underrun detection
Diffstat (limited to 'palsa.c')
-rw-r--r--palsa.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/palsa.c b/palsa.c
index 02acfadd..c5611d7c 100644
--- a/palsa.c
+++ b/palsa.c
@@ -101,6 +101,7 @@ palsa_init (void) {
goto open_error;
}
alsa_rate = val;
+ printf ("chosen samplerate: %d\n", alsa_rate);
if ((err = snd_pcm_hw_params_set_channels (audio, hw_params, 2)) < 0) {
fprintf (stderr, "cannot set channel count (%s)\n",
@@ -323,7 +324,9 @@ palsa_thread (uintptr_t context) {
char buf[bufsize];
palsa_callback (buf, frames_to_deliver*4);
if ((err = snd_pcm_writei (audio, buf, frames_to_deliver)) < 0) {
- fprintf (stderr, "write failed (%s)\n", snd_strerror (err));
+ //fprintf (stderr, "write failed (%s)\n", snd_strerror (err));
+ snd_pcm_prepare (audio);
+ snd_pcm_start (audio);
}
mutex_unlock (mutex);
usleep (0); // let other threads gain some spin (avoid deadlock)