Messages in this thread |  | | Date | Tue, 17 Feb 2015 15:48:33 +0100 | From | Hans Verkuil <> | Subject | Re: [PATCH 1/2] media/v4l2-ctrls: Always run s_ctrl on volatile ctrls |
| |
On 02/17/2015 03:41 PM, Ricardo Ribalda Delgado wrote: > Volatile controls can change their value outside the v4l-ctrl framework. > We should ignore the cached written value of the ctrl when evaluating if > we should run s_ctrl. > > Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> > --- > drivers/media/v4l2-core/v4l2-ctrls.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c > index 45c5b47..693a473 100644 > --- a/drivers/media/v4l2-core/v4l2-ctrls.c > +++ b/drivers/media/v4l2-core/v4l2-ctrls.c > @@ -1609,6 +1609,12 @@ static int cluster_changed(struct v4l2_ctrl *master) > > if (ctrl == NULL) > continue; > + > + if (ctrl->flags & V4L2_CTRL_FLAG_VOLATILE) { > + changed = true;
You need to explicitly set 'ctrl->has_changed = false;' here.
And a comment why it is set to false (to prevent sending the event) is needed as well since it would look a bit weird otherwise.
Regards,
Hans
> + continue; > + } > + > for (idx = 0; !ctrl_changed && idx < ctrl->elems; idx++) > ctrl_changed = !ctrl->type_ops->equal(ctrl, idx, > ctrl->p_cur, ctrl->p_new); >
|  |