If an error occurs at starting the stream, snd_pcm_write*() should return
an error value instead of the size to be written.
if (err < 0)
break;
frames = err;
- offset += frames;
- size -= frames;
- xfer += frames;
if (state == SND_PCM_STATE_PREPARED) {
snd_pcm_sframes_t hw_avail = pcm->buffer_size - avail;
hw_avail += frames;
goto _end;
}
}
+ offset += frames;
+ size -= frames;
+ xfer += frames;
}
_end:
return xfer > 0 ? (snd_pcm_sframes_t) xfer : snd_pcm_check_error(pcm, err);