On 06/04/14 16:05, Laurent Pinchart wrote: > The V4L2 specification states that > > "When the application did not call VIDIOC_QBUF or VIDIOC_STREAMON yet > the poll() function succeeds, but sets the POLLERR flag in the revents > field." > > The vb2_poll() function sets POLLERR when the queued buffers list is > empty, regardless of whether this is caused by the stream not being > active yet, or by a transient buffer underrun. > > Bring the implementation in line with the specification by returning > POLLERR only when the queue is not streaming. Buffer underruns during > streaming are not treated specially anymore and just result in poll() > blocking until the next event. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Regards, Hans > --- > drivers/media/video/videobuf2-core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/video/videobuf2-core.c b/drivers/media/video/videobuf2-core.c > index 11d31bf..5f38774 100644 > --- a/drivers/media/video/videobuf2-core.c > +++ b/drivers/media/video/videobuf2-core.c > @@ -1984,9 +1984,9 @@ unsigned int vb2_poll(struct vb2_queue *q, struct file *file, poll_table *wait) > } > > /* > - * There is nothing to wait for if no buffers have already been queued. > + * There is nothing to wait for if the queue isn't streaming. > */ > - if (list_empty(&q->queued_list)) > + if (!vb2_is_streaming(q)) > return res | POLLERR; > > poll_wait(file, &q->done_wq, wait); > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html