From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752841AbbBQOtA (ORCPT ); Tue, 17 Feb 2015 09:49:00 -0500 Received: from lb3-smtp-cloud2.xs4all.net ([194.109.24.29]:32929 "EHLO lb3-smtp-cloud2.xs4all.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751674AbbBQOs6 (ORCPT ); Tue, 17 Feb 2015 09:48:58 -0500 Message-ID: <54E354C1.7050201@xs4all.nl> Date: Tue, 17 Feb 2015 15:48:33 +0100 From: Hans Verkuil User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.4.0 MIME-Version: 1.0 To: Ricardo Ribalda Delgado , Hans Verkuil , Mauro Carvalho Chehab , Jonathan Corbet , Arun Kumar K , Sylwester Nawrocki , Sakari Ailus , Antti Palosaari , linux-media@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] media/v4l2-ctrls: Always run s_ctrl on volatile ctrls References: <1424184090-14945-1-git-send-email-ricardo.ribalda@gmail.com> In-Reply-To: <1424184090-14945-1-git-send-email-ricardo.ribalda@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > 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); >