From 574c6d4b90ee04bfff588965810fce3eff0cd6be Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 16 Oct 2017 13:23:20 +0200 Subject: [PATCH] v4l2: only produce data when needed We should only produce data when the io area status is NEED_BUFFER. --- spa/plugins/v4l2/v4l2-utils.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/spa/plugins/v4l2/v4l2-utils.c b/spa/plugins/v4l2/v4l2-utils.c index ab380ab44..aa1a7e464 100644 --- a/spa/plugins/v4l2/v4l2-utils.c +++ b/spa/plugins/v4l2/v4l2-utils.c @@ -931,9 +931,13 @@ static int mmap_read(struct impl *this) d[0].chunk->stride = state->fmt.fmt.pix.bytesperline; b->outstanding = true; - io->buffer_id = b->outbuf->id; - io->status = SPA_RESULT_HAVE_BUFFER; - this->callbacks->have_output(this->callbacks_data); + if (io->status == SPA_RESULT_NEED_BUFFER) { + io->buffer_id = b->outbuf->id; + io->status = SPA_RESULT_HAVE_BUFFER; + this->callbacks->have_output(this->callbacks_data); + } else { + spa_v4l2_buffer_recycle(this, b->outbuf->id); + } return SPA_RESULT_OK; }