]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Fixed double initialization in prepare
authorJaroslav Kysela <perex@perex.cz>
Sat, 24 Nov 2001 11:27:24 +0000 (11:27 +0000)
committerJaroslav Kysela <perex@perex.cz>
Sat, 24 Nov 2001 11:27:24 +0000 (11:27 +0000)
src/pcm/pcm_share.c

index 3ea7dde9f8a19c572e652351e91078ff0054cb65..2fa4170a2dc489306958ac7f30f6ca70d2d3b0b6 100644 (file)
@@ -813,6 +813,17 @@ static int snd_pcm_share_prepare(snd_pcm_t *pcm)
        snd_pcm_share_slave_t *slave = share->slave;
        int err = 0;
        Pthread_mutex_lock(&slave->mutex);
+       switch (share->state) {
+       case SND_PCM_STATE_OPEN:
+               err = -EBADFD;
+               goto _end;
+       case SND_PCM_STATE_RUNNING:
+               err = -EBUSY;
+               goto _end;
+       case SND_PCM_STATE_PREPARED:
+               err = 0;
+               goto _end;
+       }
        if (slave->prepared_count == 0) {
                err = snd_pcm_prepare(slave->pcm);
                if (err < 0)