- if(frames_written < 0)
- fatal(0, "error calling snd_pcm_writei: %ld",
- (long)frames_written);
- samples_written = frames_written * 2;
- packets->nused += samples_written;
- next_timestamp += samples_written;
- if(packets->nused == packets->nsamples) {
- /* We're done with this packet */
- struct packet *p = packets;
-
- packets = p->next;
- nsamples -= p->nsamples;
- free(p);
- pthread_cond_broadcast(&cond);
+ if(frames_written < 0) {
+ if(frames_written != -EAGAIN)
+ fatal(0, "error calling snd_pcm_writei: %ld",
+ (long)frames_written);
+ } else {
+ samples_written = frames_written * 2;
+ packets->nused += samples_written;
+ next_timestamp += samples_written;
+ if(packets->nused == packets->nsamples) {
+ /* We're done with this packet */
+ struct packet *p = packets;
+
+ packets = p->next;
+ nsamples -= p->nsamples;
+ free(p);
+ pthread_cond_broadcast(&cond);
+ }
+ infilling = 0;