V4L/DVB (6755): Avoid troubles when using multiple devices
authorMauro Carvalho Chehab <mchehab@infradead.org>
Mon, 10 Dec 2007 07:43:38 +0000 (04:43 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Jan 2008 21:03:22 +0000 (19:03 -0200)
mv_count is a counter used to move the vertical bars. Before this patch, it
where a static var. This works fine for just one device. However, when using
multiple devices, every device would increment it.

This patch moves it to its correct place: struct vivi_dev. So, now, each device
has its own data.

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

index fda01f4..ea9ff8a 100644 (file)
@@ -178,6 +178,8 @@ struct vivi_dev {
        /* Several counters */
        int                        h,m,s,us,jiffies;
        char                       timestr[13];
+
+       int                        mv_count;    /* Controls bars movement */
 };
 
 struct vivi_fh {
@@ -327,14 +329,12 @@ static void vivi_fillbuff(struct vivi_dev *dev,struct vivi_buffer *buf)
        struct timeval ts;
        char *tmpbuf = kmalloc(wmax*2,GFP_KERNEL);
        void *vbuf=videobuf_to_vmalloc (&buf->vb);
-       /* FIXME: move to dev struct */
-       static int mv_count=0;
 
        if (!tmpbuf)
                return;
 
        for (h=0;h<hmax;h++) {
-               gen_line(tmpbuf,0,wmax,hmax,h,mv_count,
+               gen_line(tmpbuf, 0, wmax, hmax, h, dev->mv_count,
                         dev->timestr);
                /* FIXME: replacing to __copy_to_user */
                if (copy_to_user(vbuf+pos,tmpbuf,wmax*2)!=0)
@@ -342,7 +342,7 @@ static void vivi_fillbuff(struct vivi_dev *dev,struct vivi_buffer *buf)
                pos += wmax*2;
        }
 
-       mv_count++;
+       dev->mv_count++;
 
        kfree(tmpbuf);