--- src/pcm/pcm.c.old 2004-02-02 23:07:14.355587424 +0000 +++ src/pcm/pcm.c 2004-02-02 23:07:19.871748840 +0000 @@ -6033,6 +6033,11 @@ } else if (((snd_pcm_uframes_t)avail < pcm->avail_min && size > (snd_pcm_uframes_t)avail) || (size >= pcm->xfer_align && (snd_pcm_uframes_t)avail < pcm->xfer_align)) { + if (state == SND_PCM_STATE_PREPARED ) { + err = snd_pcm_start(pcm); + if (err < 0) + goto _end; + } if (pcm->mode & SND_PCM_NONBLOCK) { err = -EAGAIN; goto _end;