From: Jaroslav Kysela Date: Tue, 23 Aug 2005 12:57:48 +0000 (+0000) Subject: pcm.c test / example - Added EINTR handling X-Git-Tag: v1.0.10rc2~26 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=d9be3e3556e7eb8d732ab937492ddbd755df82c4;p=alsa-lib.git pcm.c test / example - Added EINTR handling --- diff --git a/test/pcm.c b/test/pcm.c index 95e27bf4..b461b118 100644 --- a/test/pcm.c +++ b/test/pcm.c @@ -201,7 +201,7 @@ static int xrun_recovery(snd_pcm_t *handle, int err) printf("Can't recovery from underrun, prepare failed: %s\n", snd_strerror(err)); return 0; } else if (err == -ESTRPIPE) { - while ((err = snd_pcm_resume(handle)) == -EAGAIN) + while ((err = snd_pcm_resume(handle)) == -EAGAIN || err == -EINTR) sleep(1); /* wait until the suspend flag is released */ if (err < 0) { err = snd_pcm_prepare(handle); @@ -231,7 +231,7 @@ static int write_loop(snd_pcm_t *handle, cptr = period_size; while (cptr > 0) { err = snd_pcm_writei(handle, ptr, cptr); - if (err == -EAGAIN) + if (err == -EAGAIN || err == -EINTR) continue; if (err < 0) { if (xrun_recovery(handle, err) < 0) { @@ -661,7 +661,7 @@ static int direct_write_loop(snd_pcm_t *handle, cptr = period_size; while (cptr > 0) { err = snd_pcm_mmap_writei(handle, ptr, cptr); - if (err == -EAGAIN) + if (err == -EAGAIN || err == -EINTR) continue; if (err < 0) { if (xrun_recovery(handle, err) < 0) {