On Thu, Jun 5, 2014 at 9:23 PM, Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> 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> Acked-by: Pawel Osciak <pawel@xxxxxxxxxx> > --- > drivers/media/v4l2-core/videobuf2-core.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/v4l2-core/videobuf2-core.c b/drivers/media/v4l2-core/videobuf2-core.c > index 349e659..fd428e0 100644 > --- a/drivers/media/v4l2-core/videobuf2-core.c > +++ b/drivers/media/v4l2-core/videobuf2-core.c > @@ -2533,9 +2533,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; > > if (list_empty(&q->done_list)) > -- > 1.8.5.5 > -- 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