diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2014-01-17 06:25:26 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-07-17 10:57:16 -0400 |
commit | 9ea1b7a4b66fddfab9e65e243b72d18371f8d9a5 (patch) | |
tree | fd8a4887e9fafdd171cb734430511e5a67bf2844 /include/media/v4l2-ctrls.h | |
parent | 000e4f9a5bcf86fb52914c445ce5634b65e910a2 (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.h | 3 |
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; |