diff --git a/hw/links.c b/hw/links.c index 4a33ebf..24b3d42 100644 --- a/hw/links.c +++ b/hw/links.c @@ -64,13 +64,6 @@ int _build_fds(link_t *all_links, struct pollfd *fds, link_t **links, buffer_lis if (source->device->output_device) { source->device->output_device->paused = paused; } - - if (!source->device->paused && source->do_mmap) { - buffer_t *buf; - while (buf = buffer_list_find_slot(source)) { - buffer_consumed(buf, "enqueued"); - } - } int count_enqueued = buffer_list_count_enqueued(source); @@ -171,6 +164,14 @@ int links_step(link_t *all_links, int timeout) buf_list->nbufs, buf_list->device->paused); + // feed capture queue + if (!buf_list->device->paused && buf_list->do_capture && buf_list->do_mmap) { + buffer_t *buf; + while (buf = buffer_list_find_slot(buf_list)) { + buffer_consumed(buf, "enqueued"); + } + } + if (fds[i].revents & POLLIN) { if (links_enqueue_from_source(buf_list, link) < 0) { return -1;