OSDN Git Service

pcm: dmix: Return error when slave is in OPEN or DISCONNECTED
authorTakashi Iwai <tiwai@suse.de>
Tue, 31 May 2016 10:48:40 +0000 (12:48 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 1 Jun 2016 05:57:54 +0000 (07:57 +0200)
A slave PCM in OPEN or DISCONNECTED state can't be used properly at
all, so the best option is to return -EBADFD error.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/pcm/pcm_direct.c

index fbf9a59..21f98e7 100644 (file)
@@ -822,12 +822,14 @@ int snd_pcm_direct_prepare(snd_pcm_t *pcm)
        case SND_PCM_STATE_SETUP:
        case SND_PCM_STATE_XRUN:
        case SND_PCM_STATE_SUSPENDED:
-       case SND_PCM_STATE_DISCONNECTED:
                err = snd_pcm_prepare(dmix->spcm);
                if (err < 0)
                        return err;
                snd_pcm_start(dmix->spcm);
                break;
+       case SND_PCM_STATE_OPEN:
+       case SND_PCM_STATE_DISCONNECTED:
+               return -EBADFD;
        }
        snd_pcm_direct_check_interleave(dmix, pcm);
        dmix->state = SND_PCM_STATE_PREPARED;