From ced6868184f03ca1ee0c8d57bdd9271c12f3be69 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Thu, 4 Oct 2001 15:06:37 +0000 Subject: [PATCH] Added suspend handling --- ac3dec/output.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ac3dec/output.c b/ac3dec/output.c index 1192326..86a82b5 100644 --- a/ac3dec/output.c +++ b/ac3dec/output.c @@ -174,8 +174,14 @@ int output_play(sint_16* output_samples, uint_32 num_frames) snd_pcm_sframes_t res = 0; do { - if (res == -EPIPE) + if (res == -EPIPE) /* underrun */ res = snd_pcm_prepare(pcm); + else if (res == -ESTRPIPE) { /* suspend */ + while ((res = snd_pcm_resume(pcm)) == -EBUSY) + sleep(1); + if (res < 0) + res = snd_pcm_prepare(pcm); + } res = res < 0 ? res : snd_pcm_writei(pcm, (void *)output_samples, num_frames); if (res > 0) { output_samples += out_config.channels * res; -- 2.47.1