diff --git a/src/pcm.c b/src/pcm.c index 75fc85c..62489a6 100644 --- a/src/pcm.c +++ b/src/pcm.c @@ -587,13 +587,9 @@ int pcm_readi(struct pcm *pcm, void *data, unsigned int frame_count) x.frames = frame_count; x.result = 0; for (;;) { - if (!pcm->running) { - if (pcm_start(pcm) < 0) { - fprintf(stderr, "start error"); - return -errno; - } - } - if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_READI_FRAMES, &x)) { + if ((!pcm->running) && (pcm_start(pcm) < 0)) + return -errno; + else if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_READI_FRAMES, &x)) { pcm->prepared = 0; pcm->running = 0; if (errno == EPIPE) {