v4l2: only produce data when needed

We should only produce data when the io area status is NEED_BUFFER.
This commit is contained in:
Wim Taymans 2017-10-16 13:23:20 +02:00
parent 9706c191b9
commit 574c6d4b90

View file

@ -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;
}