]> git.alsa-project.org Git - alsa-oss.git/commitdiff
More fix for PM
authorTakashi Iwai <tiwai@suse.de>
Thu, 1 Sep 2005 17:32:52 +0000 (17:32 +0000)
committerTakashi Iwai <tiwai@suse.de>
Thu, 1 Sep 2005 17:32:52 +0000 (17:32 +0000)
More fix for PM resume.  This fix the resume with helix engine.

alsa/pcm.c

index 93ffd50602a028f26e1549a465efc771cae2f376..f5ec83d9f199d61ab8890d1d4de49c22b5cdb40e 100644 (file)
@@ -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);