Re: [PATCH 10/10] uvcvideo: Send control change events for slave ctrls when the master changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 03/28/2012 11:34 AM, Laurent Pinchart wrote:
Hi Hans,

Thanks for the patch.

On Sunday 25 March 2012 13:56:50 Hans de Goede wrote:
This allows v4l2 control UI-s to update the inactive state (ie grey-ing
out of controls) for slave controls when the master control changes.

Signed-off-by: Hans de Goede<hdegoede@xxxxxxxxxx>
---
  drivers/media/video/uvc/uvc_ctrl.c |   55 +++++++++++++++++++++++++++++++--
  1 file changed, 52 insertions(+), 3 deletions(-)

diff --git a/drivers/media/video/uvc/uvc_ctrl.c
b/drivers/media/video/uvc/uvc_ctrl.c index 91d9007..2d06fd8 100644
--- a/drivers/media/video/uvc/uvc_ctrl.c
+++ b/drivers/media/video/uvc/uvc_ctrl.c

[snip]

+static void uvc_ctrl_send_events(struct uvc_fh *handle,
+	struct v4l2_ext_control *xctrls, int xctrls_count)
+{
+	struct uvc_control_mapping *mapping;
+	struct uvc_control *ctrl;
+	u32 changes = V4L2_EVENT_CTRL_CH_VALUE;
+	int i, j;
+
  	for (i = 0; i<  xctrls_count; ++i) {
  		ctrl = uvc_find_control(handle->chain, xctrls[i].id,&mapping);
+
+		for (j = 0; j<  ARRAY_SIZE(mapping->slave_ids); ++j) {
+			if (!mapping->slave_ids[j])
+				break;
+			uvc_ctrl_send_slave_event(handle,
+						  mapping->slave_ids[j],
+						  xctrls, xctrls_count);
+		}
+
+		/*
+		 * If the master is being modified in the same transaction
+		 * flags may change too.
+		 */
+		if (mapping->master_id)
+			for (j = 0; j<  xctrls_count; j++)
+				if (xctrls[j].id == mapping->master_id) {
+					changes |= V4L2_EVENT_CTRL_CH_FLAGS;

Should you verify that the modification to the master control actually caused
a slave control flags change, or would that be overkill ?

I think that that would be overkill. This sending of events for flag changes
already is not 100% trivial and I think keeping it KISS and occasionally sending
an unneeded change event is better then making the code more complicated.



+					break;
+				}

Could you please put brackets around the for and the if ?

Will do.

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux