|
@@ -1434,7 +1434,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
|
|
|
|
|
|
/* It isn't an AC97 control. Sends it to the v4l2 dev interface */
|
|
/* It isn't an AC97 control. Sends it to the v4l2 dev interface */
|
|
if (rc == 1) {
|
|
if (rc == 1) {
|
|
- v4l2_device_call_all(&dev->v4l2_dev, 0, core, s_ctrl, ctrl);
|
|
|
|
|
|
+ rc = v4l2_device_call_until_err(&dev->v4l2_dev, 0, core, s_ctrl, ctrl);
|
|
|
|
|
|
/*
|
|
/*
|
|
* In the case of non-AC97 volume controls, we still need
|
|
* In the case of non-AC97 volume controls, we still need
|
|
@@ -1708,11 +1708,15 @@ static int vidioc_streamoff(struct file *file, void *priv,
|
|
fh, type, fh->resources, dev->resources);
|
|
fh, type, fh->resources, dev->resources);
|
|
|
|
|
|
if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
|
|
if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
|
|
- videobuf_streamoff(&fh->vb_vidq);
|
|
|
|
- res_free(fh, EM28XX_RESOURCE_VIDEO);
|
|
|
|
|
|
+ if (res_check(fh, EM28XX_RESOURCE_VIDEO)) {
|
|
|
|
+ videobuf_streamoff(&fh->vb_vidq);
|
|
|
|
+ res_free(fh, EM28XX_RESOURCE_VIDEO);
|
|
|
|
+ }
|
|
} else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
|
|
} else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) {
|
|
- videobuf_streamoff(&fh->vb_vbiq);
|
|
|
|
- res_free(fh, EM28XX_RESOURCE_VBI);
|
|
|
|
|
|
+ if (res_check(fh, EM28XX_RESOURCE_VBI)) {
|
|
|
|
+ videobuf_streamoff(&fh->vb_vbiq);
|
|
|
|
+ res_free(fh, EM28XX_RESOURCE_VBI);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
return 0;
|
|
return 0;
|