From 6da35b48675f48f19d8f326789e3c904a647e00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Fran=C3=A7ois=20Moine?= Date: Fri, 9 Apr 2010 06:07:58 -0300 Subject: [PATCH] --- yaml --- r: 193029 b: refs/heads/master c: 832d0a9130c18b9ee4b671c46763b972eb2a2568 h: refs/heads/master i: 193027: 574f111e989d0930d2ba6a0238b820f5f1541236 v: v3 --- [refs] | 2 +- trunk/drivers/media/video/gspca/gspca.c | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 7bebc3de98d0..e0a7e8d73bcf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 18bf99aa0cb80b4fa3974a511fd033c2967b04c8 +refs/heads/master: 832d0a9130c18b9ee4b671c46763b972eb2a2568 diff --git a/trunk/drivers/media/video/gspca/gspca.c b/trunk/drivers/media/video/gspca/gspca.c index 4fb031cfb64f..9c9d7ea7e626 100644 --- a/trunk/drivers/media/video/gspca/gspca.c +++ b/trunk/drivers/media/video/gspca/gspca.c @@ -1503,7 +1503,7 @@ static int vidioc_reqbufs(struct file *file, void *priv, struct v4l2_requestbuffers *rb) { struct gspca_dev *gspca_dev = priv; - int i, ret = 0; + int i, ret = 0, streaming; switch (rb->memory) { case GSPCA_MEMORY_READ: /* (internal call) */ @@ -1538,7 +1538,8 @@ static int vidioc_reqbufs(struct file *file, void *priv, } /* stop streaming */ - if (gspca_dev->streaming) { + streaming = gspca_dev->streaming; + if (streaming) { mutex_lock(&gspca_dev->usb_lock); gspca_dev->usb_err = 0; gspca_stream_off(gspca_dev); @@ -1557,6 +1558,8 @@ static int vidioc_reqbufs(struct file *file, void *priv, if (ret == 0) { rb->count = gspca_dev->nframes; gspca_dev->capt_file = file; + if (streaming) + ret = gspca_init_transfer(gspca_dev); } out: mutex_unlock(&gspca_dev->queue_lock);