From: Takashi Iwai Date: Thu, 1 Sep 2005 17:32:52 +0000 (+0000) Subject: More fix for PM X-Git-Tag: v1.0.10rc2~2 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=11d0eaa82bfed733a6101f963163f4f4265e1f10;p=alsa-oss.git More fix for PM More fix for PM resume. This fix the resume with helix engine. --- diff --git a/alsa/pcm.c b/alsa/pcm.c index 93ffd50..f5ec83d 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_SUSPENDED) { + err = resume(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_RUNNING) { snd_pcm_delay(pcm, &delay); if (str->mmap_buffer) @@ -1129,6 +1135,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) break; } state = snd_pcm_state(pcm); + if (state == SND_PCM_STATE_SUSPENDED) { + err = resume(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_RUNNING || state == SND_PCM_STATE_DRAINING) { snd_pcm_delay(pcm, &delay); @@ -1162,6 +1174,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) break; } state = snd_pcm_state(pcm); + if (state == SND_PCM_STATE_SUSPENDED) { + err = resume(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_RUNNING) { snd_pcm_delay(pcm, &delay); if (str->mmap_buffer) @@ -1204,6 +1222,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) break; } state = snd_pcm_state(pcm); + if (state == SND_PCM_STATE_SUSPENDED) { + err = resume(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_RUNNING || state == SND_PCM_STATE_DRAINING) { snd_pcm_delay(pcm, &delay); @@ -1245,6 +1269,12 @@ int lib_oss_pcm_ioctl(int fd, unsigned long cmd, ...) break; } state = snd_pcm_state(pcm); + if (state == SND_PCM_STATE_SUSPENDED) { + err = resume(pcm); + if (err < 0) + break; + state = snd_pcm_state(pcm); + } if (state == SND_PCM_STATE_RUNNING || state == SND_PCM_STATE_DRAINING) { snd_pcm_delay(pcm, &delay);