[media] v4l: vb2: Don't return POLLERR during transient buffer underruns
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 3 Jun 2014 20:41:06 +0000 (17:41 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 17 Jul 2014 15:55:09 +0000 (12:55 -0300)
commit9241650d62f79a3da01f1d5e8ebd195083330b75
treec3b8ab85ba34a02a7dc28d95fc97637ef628ee30
parentbdc2df62ae38bbab044078f4d25a7a3d9e2379c9
[media] v4l: vb2: Don't return POLLERR during transient buffer underruns

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 if no buffer has been queued 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@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Pawel Osciak <pawel@osciak.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/v4l2-core/videobuf2-core.c