]> err.no Git - linux-2.6/commitdiff
V4L/DVB (6274): V4L: vivi.c replace logic in vivi_poll with videobuf_poll_stream
authorBrandon Philips <bphilips@suse.de>
Thu, 27 Sep 2007 23:55:02 +0000 (20:55 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Wed, 10 Oct 2007 03:03:05 +0000 (00:03 -0300)
Since vivi is using videobuf_read_stream() it can use videobuf_poll_stream()
now.

Signed-off-by: Brandon Philips <bphilips@suse.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/vivi.c

index 512128a6f58c6f0b1e1b75a71082fa56f741d097..cdef622f6b3279cbd1197ccf8d6596a4d8de47dc 100644 (file)
@@ -1111,29 +1111,14 @@ vivi_poll(struct file *file, struct poll_table_struct *wait)
 {
        struct vivi_fh        *fh = file->private_data;
        struct vivi_buffer    *buf;
+       struct videobuf_queue *q = &fh->vb_vidq;
 
        dprintk(1,"%s\n",__FUNCTION__);
 
        if (V4L2_BUF_TYPE_VIDEO_CAPTURE != fh->type)
                return POLLERR;
 
-       if (res_get(fh->dev,fh)) {
-               dprintk(1,"poll: mmap interface\n");
-               /* streaming capture */
-               if (list_empty(&fh->vb_vidq.stream))
-                       return POLLERR;
-               buf = list_entry(fh->vb_vidq.stream.next,struct vivi_buffer,vb.stream);
-       } else {
-               dprintk(1,"poll: read() interface\n");
-               /* read() capture */
-               return videobuf_poll_stream(file, &fh-> vb_vidq,
-                                           wait);
-       }
-       poll_wait(file, &buf->vb.done, wait);
-       if (buf->vb.state == STATE_DONE ||
-           buf->vb.state == STATE_ERROR)
-               return POLLIN|POLLRDNORM;
-       return 0;
+       return videobuf_poll_stream(file, q, wait);
 }
 
 static int vivi_release(struct inode *inode, struct file *file)