On Tue, Nov 10, 2020 at 03:30:15PM +0100, thomas.haemmerle@xxxxxxxxxxxxxx wrote: > From: Thomas Haemmerle <thomas.haemmerle@xxxxxxxxxxxxxx> > > Currently, the UVC function is activated when open on the corresponding > v4l2 device is called. > On another open the activation of the function fails since the > deactivation counter in `usb_function_activate` equals 0. However the > error is not returned to userspace since the open of the v4l2 device is > successful. > > On a close the function is deactivated (since deactivation counter still > equals 0) and the video is disabled in `uvc_v4l2_release`, although the > UVC application potentially is streaming. > > Move activation of UVC function to subscription on UVC_EVENT_SETUP > because there we can guarantee for a userspace application utilizing UVC. > Block subscription on UVC_EVENT_SETUP while another application already > is subscribed to it, indicated by `bool func_connected` in > `struct uvc_device`. > Extend the `struct uvc_file_handle` with member `bool is_uvc_app_handle` > to tag it as the handle used by the userspace UVC application. > > With this a process is able to check capabilities of the v4l2 device > without deactivating the function for the actual UVC application. > > Signed-off-by: Thomas Haemmerle <thomas.haemmerle@xxxxxxxxxxxxxx> > --- > v3: > - replace `unsigned int connections` with `bool func_connected` > - rename `bool connected` to `bool is_uvc_app_handle` Can you fix this up based on Hans's review? thanks, greg k-h