> > Hans > > > + } > > > > ctrl->dirty = 1; > > ctrl->modified = 1; > > > >> > >>> - Second value will be the cached one > >>> > >>> now the camera is at zoom 10 > >>> If you read the value, you will read the cached value > >>> > >>>> E.g.: the zoom control is at value 0 and I set it to 10, then I poll the zoom control > >>>> value: will that report the intermediate values until it reaches 10? And when it is > >>>> at 10, the control event is sent? > >>>> > >>>>>>>> Cc: stable@xxxxxxxxxxxxxxx > >>>>>>>> Fixes: e5225c820c05 ("media: uvcvideo: Send a control event when a Control Change interrupt arrives") > >>>>>>>> Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx> > >>>>>>>> --- > >>>>>>>> drivers/media/usb/uvc/uvc_ctrl.c | 4 ++++ > >>>>>>>> 1 file changed, 4 insertions(+) > >>>>>>>> > >>>>>>>> diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c > >>>>>>>> index b6af4ff92cbd..3f8ae35cb3bc 100644 > >>>>>>>> --- a/drivers/media/usb/uvc/uvc_ctrl.c > >>>>>>>> +++ b/drivers/media/usb/uvc/uvc_ctrl.c > >>>>>>>> @@ -1955,6 +1955,10 @@ int uvc_ctrl_set(struct uvc_fh *handle, > >>>>>>>> if (!(ctrl->info.flags & UVC_CTRL_FLAG_SET_CUR)) > >>>>>>>> return -EACCES; > >>>>>>>> > >>>>>>>> + /* Other file handle is waiting a response from this async control. */ > >>>>>>>> + if (ctrl->handle && ctrl->handle != handle) > >>>>>>>> + return -EBUSY; > >>>>>>>> + > >>>>>>>> /* Clamp out of range values. */ > >>>>>>>> switch (mapping->v4l2_type) { > >>>>>>>> case V4L2_CTRL_TYPE_INTEGER: > >> > >> -- > >> Regards, > >> > >> Laurent Pinchart > > > > > > > -- Ricardo Ribalda