aboutsummaryrefslogtreecommitdiffstats
path: root/include/media/v4l2-ctrls.h
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2014-01-17 06:25:26 -0500
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-07-17 10:57:16 -0400
commit9ea1b7a4b66fddfab9e65e243b72d18371f8d9a5 (patch)
treefd8a4887e9fafdd171cb734430511e5a67bf2844 /include/media/v4l2-ctrls.h
parent000e4f9a5bcf86fb52914c445ce5634b65e910a2 (diff)
[media] v4l2-ctrls: compare values only once
When setting a control the control's new value is compared to the current value twice: once by new_to_cur(), once by cluster_changed(). Not a big deal when dealing with simple values, but it can be a problem when dealing with compound types or arrays. So fix this: cluster_changed() sets the has_changed flag, which is used by new_to_cur() instead of having to do another compare. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'include/media/v4l2-ctrls.h')
-rw-r--r--include/media/v4l2-ctrls.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index ddd9fdf1ac1a..a38bd55909b2 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -96,6 +96,8 @@ typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *ctrl, void *priv);
96 * @is_new: Set when the user specified a new value for this control. It 96 * @is_new: Set when the user specified a new value for this control. It
97 * is also set when called from v4l2_ctrl_handler_setup. Drivers 97 * is also set when called from v4l2_ctrl_handler_setup. Drivers
98 * should never set this flag. 98 * should never set this flag.
99 * @has_changed: Set when the current value differs from the new value. Drivers
100 * should never use this flag.
99 * @is_private: If set, then this control is private to its handler and it 101 * @is_private: If set, then this control is private to its handler and it
100 * will not be added to any other handlers. Drivers can set 102 * will not be added to any other handlers. Drivers can set
101 * this flag. 103 * this flag.
@@ -158,6 +160,7 @@ struct v4l2_ctrl {
158 unsigned int done:1; 160 unsigned int done:1;
159 161
160 unsigned int is_new:1; 162 unsigned int is_new:1;
163 unsigned int has_changed:1;
161 unsigned int is_private:1; 164 unsigned int is_private:1;
162 unsigned int is_auto:1; 165 unsigned int is_auto:1;
163 unsigned int is_int:1; 166 unsigned int is_int:1;