From: Hans Verkuil <hans.verkuil@xxxxxxxxx> Set the first time a buffer from a request is queued to vb2. Cleared when the queue is canceled. Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> --- drivers/media/common/videobuf2/videobuf2-core.c | 2 ++ include/media/videobuf2-core.h | 3 +++ 2 files changed, 5 insertions(+) diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c index 697765e70fbe..ec76dcb130fe 100644 --- a/drivers/media/common/videobuf2/videobuf2-core.c +++ b/drivers/media/common/videobuf2/videobuf2-core.c @@ -1500,6 +1500,7 @@ int vb2_core_qbuf(struct vb2_queue *q, unsigned int index, void *pb, if (ret) return ret; + q->uses_requests = 1; vb->state = VB2_BUF_STATE_IN_REQUEST; /* Fill buffer information for the userspace */ if (pb) { @@ -1813,6 +1814,7 @@ static void __vb2_queue_cancel(struct vb2_queue *q) q->start_streaming_called = 0; q->queued_count = 0; q->error = 0; + q->uses_requests = 0; /* * Remove all buffers from videobuf's list... diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h index cad712403d14..67553180d98f 100644 --- a/include/media/videobuf2-core.h +++ b/include/media/videobuf2-core.h @@ -468,6 +468,8 @@ struct vb2_buf_ops { * @quirk_poll_must_check_waiting_for_buffers: Return %EPOLLERR at poll when QBUF * has not been called. This is a vb1 idiom that has been adopted * also by vb2. + * @uses_requests: requests are used for this queue. Set to 1 the first time + * a request is queued. Set to 0 when the queue is canceled. * @lock: pointer to a mutex that protects the &struct vb2_queue. The * driver can set this to a mutex to let the v4l2 core serialize * the queuing ioctls. If the driver wants to handle locking @@ -535,6 +537,7 @@ struct vb2_queue { unsigned fileio_write_immediately:1; unsigned allow_zero_bytesused:1; unsigned quirk_poll_must_check_waiting_for_buffers:1; + unsigned uses_requests:1; struct mutex *lock; void *owner; -- 2.17.0