[media] v4l2-ctrls: always send an event if a control changed implicitly
By default no control events are sent to the application that caused the control value or flags change (i.e. the control(s) passed to VIDIOC_S_CTRL or VIDIOC_S_EXT_CTRLS). But if a change in one control causes a change in another control that was not part of the control(s) in VIDIOC_S_CTRL or S_EXT_CTRLS, then the application should be notified. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
adf41b9bc3
commit
639884a6d9
1 changed files with 6 additions and 1 deletions
|
@ -712,11 +712,16 @@ static void new_to_cur(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl,
|
||||||
if (!is_cur_manual(ctrl->cluster[0]))
|
if (!is_cur_manual(ctrl->cluster[0]))
|
||||||
ctrl->flags |= V4L2_CTRL_FLAG_INACTIVE;
|
ctrl->flags |= V4L2_CTRL_FLAG_INACTIVE;
|
||||||
}
|
}
|
||||||
if (changed || update_inactive)
|
if (changed || update_inactive) {
|
||||||
|
/* If a control was changed that was not one of the controls
|
||||||
|
modified by the application, then send the event to all. */
|
||||||
|
if (!ctrl->is_new)
|
||||||
|
fh = NULL;
|
||||||
send_event(fh, ctrl,
|
send_event(fh, ctrl,
|
||||||
(changed ? V4L2_EVENT_CTRL_CH_VALUE : 0) |
|
(changed ? V4L2_EVENT_CTRL_CH_VALUE : 0) |
|
||||||
(update_inactive ? V4L2_EVENT_CTRL_CH_FLAGS : 0));
|
(update_inactive ? V4L2_EVENT_CTRL_CH_FLAGS : 0));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Copy the current value to the new value */
|
/* Copy the current value to the new value */
|
||||||
static void cur_to_new(struct v4l2_ctrl *ctrl)
|
static void cur_to_new(struct v4l2_ctrl *ctrl)
|
||||||
|
|
Loading…
Add table
Reference in a new issue