summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca/gspca.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/gspca/gspca.c')
-rw-r--r--drivers/media/video/gspca/gspca.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
index b7cb9977f778..38b124ec23a3 100644
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@ -595,6 +595,7 @@ static int gspca_set_alt0(struct gspca_dev *gspca_dev)
static void gspca_stream_off(struct gspca_dev *gspca_dev)
{
gspca_dev->streaming = 0;
+ gspca_dev->usb_err = 0;
if (gspca_dev->sd_desc->stopN)
gspca_dev->sd_desc->stopN(gspca_dev);
destroy_urbs(gspca_dev);
@@ -1331,10 +1332,8 @@ static int dev_close(struct file *file)
/* if the file did the capture, free the streaming resources */
if (gspca_dev->capt_file == file) {
- if (gspca_dev->streaming) {
- gspca_dev->usb_err = 0;
+ if (gspca_dev->streaming)
gspca_stream_off(gspca_dev);
- }
frame_free(gspca_dev);
}
module_put(gspca_dev->module);
@@ -1569,7 +1568,6 @@ static int vidioc_reqbufs(struct file *file, void *priv,
/* stop streaming */
streaming = gspca_dev->streaming;
if (streaming) {
- gspca_dev->usb_err = 0;
gspca_stream_off(gspca_dev);
/* Don't restart the stream when switching from read
@@ -1675,7 +1673,6 @@ static int vidioc_streamoff(struct file *file, void *priv,
}
/* stop streaming */
- gspca_dev->usb_err = 0;
gspca_stream_off(gspca_dev);
/* In case another thread is waiting in dqbuf */
wake_up_interruptible(&gspca_dev->wq);