|
@@ -1762,6 +1762,12 @@ static int vb2_start_streaming(struct vb2_queue *q)
|
|
|
q->start_streaming_called = 0;
|
|
|
|
|
|
dprintk(1, "driver refused to start streaming\n");
|
|
|
+ /*
|
|
|
+ * If you see this warning, then the driver isn't cleaning up properly
|
|
|
+ * after a failed start_streaming(). See the start_streaming()
|
|
|
+ * documentation in videobuf2-core.h for more information how buffers
|
|
|
+ * should be returned to vb2 in start_streaming().
|
|
|
+ */
|
|
|
if (WARN_ON(atomic_read(&q->owned_by_drv_count))) {
|
|
|
unsigned i;
|
|
|
|
|
@@ -2123,6 +2129,12 @@ static void __vb2_queue_cancel(struct vb2_queue *q)
|
|
|
if (q->start_streaming_called)
|
|
|
call_void_qop(q, stop_streaming, q);
|
|
|
|
|
|
+ /*
|
|
|
+ * If you see this warning, then the driver isn't cleaning up properly
|
|
|
+ * in stop_streaming(). See the stop_streaming() documentation in
|
|
|
+ * videobuf2-core.h for more information how buffers should be returned
|
|
|
+ * to vb2 in stop_streaming().
|
|
|
+ */
|
|
|
if (WARN_ON(atomic_read(&q->owned_by_drv_count))) {
|
|
|
for (i = 0; i < q->num_buffers; ++i)
|
|
|
if (q->bufs[i]->state == VB2_BUF_STATE_ACTIVE)
|