summaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2014-03-04 07:34:49 -0300
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-03-11 06:56:39 -0300
commit9c0863b1cc485f2bacac0675c68b73e5341cfd26 (patch)
treeadd2ca56deca15ea064d34966edfa21dcef40fe3 /include/media
parent1a17948184a3320e0bb0aab561112211d2e9b7a8 (diff)
downloadlinux-9c0863b1cc485f2bacac0675c68b73e5341cfd26.tar.gz
linux-9c0863b1cc485f2bacac0675c68b73e5341cfd26.tar.bz2
linux-9c0863b1cc485f2bacac0675c68b73e5341cfd26.zip
[media] vb2: call buf_finish from __queue_cancel
If a queue was canceled, then the buf_finish op was never called for the pending buffers. So add this call to queue_cancel. Before calling buf_finish set the buffer state to PREPARED, which is the correct state. That way the states DONE and ERROR will only be seen in buf_finish if streaming is in progress. Since buf_finish can now be called from non-streaming state we need to adapt the handful of drivers that actually need to know this. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/videobuf2-core.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
index 8d62a51cb7a0..2ffcb81aee9c 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
@@ -276,7 +276,15 @@ struct vb2_buffer {
* in driver; optional
* @buf_finish: called before every dequeue of the buffer back to
* userspace; drivers may perform any operations required
- * before userspace accesses the buffer; optional
+ * before userspace accesses the buffer; optional. The
+ * buffer state can be one of the following: DONE and
+ * ERROR occur while streaming is in progress, and the
+ * PREPARED state occurs when the queue has been canceled
+ * and all pending buffers are being returned to their
+ * default DEQUEUED state. Typically you only have to do
+ * something if the state is VB2_BUF_STATE_DONE, since in
+ * all other cases the buffer contents will be ignored
+ * anyway.
* @buf_cleanup: called once before the buffer is freed; drivers may
* perform any additional cleanup; optional
* @start_streaming: called once to enter 'streaming' state; the driver may