From: Jaroslav Kysela Date: Thu, 17 Mar 2011 14:22:21 +0000 (+0100) Subject: pcm: check for XRUN state for GETxSPACE and GETxPTR ioctls X-Git-Tag: v1.0.25~1 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=1dfe1bb78a48077b699fe96a834ce0e78df386e3;p=alsa-oss.git pcm: check for XRUN state for GETxSPACE and GETxPTR ioctls Signed-off-by: Jaroslav Kysela --- diff --git a/alsa/pcm.c b/alsa/pcm.c index bfb0ccf..19b67e0 100644 --- a/alsa/pcm.c +++ b/alsa/pcm.c @@ -1096,6 +1096,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) break; } state = snd_pcm_state(pcm); + if (state == SND_PCM_STATE_XRUN) { + err = xrun(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_SUSPENDED) { err = resume(pcm); if (err < 0) @@ -1135,6 +1141,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) break; } state = snd_pcm_state(pcm); + if (state == SND_PCM_STATE_XRUN) { + err = xrun(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_SUSPENDED) { err = resume(pcm); if (err < 0) @@ -1174,6 +1186,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) break; } state = snd_pcm_state(pcm); + if (state == SND_PCM_STATE_XRUN) { + err = xrun(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_SUSPENDED) { err = resume(pcm); if (err < 0) @@ -1221,6 +1239,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) err = -EINVAL; break; } + if (state == SND_PCM_STATE_XRUN) { + err = xrun(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } state = snd_pcm_state(pcm); if (state == SND_PCM_STATE_SUSPENDED) { err = resume(pcm);