NULL
};
-static void trigger(struct userdata *u, pa_bool_t quick) {
+static int trigger(struct userdata *u, pa_bool_t quick) {
int enable_bits = 0, zero = 0;
pa_assert(u);
if (u->fd < 0)
- return;
+ return 0;
pa_log_debug("trigger");
if (u->source && PA_SOURCE_IS_OPENED(u->source->thread_info.state)) {
uint8_t *buf = pa_xnew(uint8_t, u->in_fragment_size);
- pa_read(u->fd, buf, u->in_fragment_size, NULL);
+
+ if (pa_read(u->fd, buf, u->in_fragment_size, NULL) < 0) {
+ pa_log("pa_read() failed: %s", pa_cstrerror(errno));
+ pa_xfree(buf);
+ return -1;
+ }
+
pa_xfree(buf);
}
}
}
+
+ return 0;
}
static void mmap_fill_memblocks(struct userdata *u, unsigned n) {
ret = pa_sink_process_msg(o, code, data, offset, chunk);
- if (do_trigger)
- trigger(u, quick);
+ if (ret >= 0 && do_trigger) {
+ if (trigger(u, quick) < 0)
+ return -1;
+ }
return ret;
}
ret = pa_source_process_msg(o, code, data, offset, chunk);
- if (do_trigger)
- trigger(u, quick);
+ if (ret >= 0 && do_trigger) {
+ if (trigger(u, quick) < 0)
+ return -1;
+ }
return ret;
}