diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/pcm.c | 10 |
1 files changed, 3 insertions, 7 deletions
@@ -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) { |