diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2011-06-10 04:56:39 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-07-27 16:53:20 -0400 |
commit | ce7275747bd548e0da7425ba0b7edb6f2c7657a2 (patch) | |
tree | 5e230670266e64ed7f4317df5f39700bb92d5825 /include/media | |
parent | 6e239399e5807132f86f64af6c659411c6a3d1a5 (diff) |
[media] v4l2-ctrls: simplify event subscription
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/v4l2-ctrls.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index c45bf40e080d..de68a59c7d84 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h | |||
@@ -169,6 +169,7 @@ struct v4l2_ctrl_ref { | |||
169 | * control is needed multiple times, so this is a simple | 169 | * control is needed multiple times, so this is a simple |
170 | * optimization. | 170 | * optimization. |
171 | * @buckets: Buckets for the hashing. Allows for quick control lookup. | 171 | * @buckets: Buckets for the hashing. Allows for quick control lookup. |
172 | * @nr_of_refs: Total number of control references in the list. | ||
172 | * @nr_of_buckets: Total number of buckets in the array. | 173 | * @nr_of_buckets: Total number of buckets in the array. |
173 | * @error: The error code of the first failed control addition. | 174 | * @error: The error code of the first failed control addition. |
174 | */ | 175 | */ |
@@ -178,6 +179,7 @@ struct v4l2_ctrl_handler { | |||
178 | struct list_head ctrl_refs; | 179 | struct list_head ctrl_refs; |
179 | struct v4l2_ctrl_ref *cached; | 180 | struct v4l2_ctrl_ref *cached; |
180 | struct v4l2_ctrl_ref **buckets; | 181 | struct v4l2_ctrl_ref **buckets; |
182 | u16 nr_of_refs; | ||
181 | u16 nr_of_buckets; | 183 | u16 nr_of_buckets; |
182 | int error; | 184 | int error; |
183 | }; | 185 | }; |
@@ -494,11 +496,29 @@ s32 v4l2_ctrl_g_ctrl(struct v4l2_ctrl *ctrl); | |||
494 | */ | 496 | */ |
495 | int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val); | 497 | int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val); |
496 | 498 | ||
499 | /* Internal helper functions that deal with control events. */ | ||
497 | void v4l2_ctrl_add_fh(struct v4l2_ctrl_handler *hdl, | 500 | void v4l2_ctrl_add_fh(struct v4l2_ctrl_handler *hdl, |
498 | struct v4l2_ctrl_fh *ctrl_fh, | 501 | struct v4l2_ctrl_fh *ctrl_fh, |
499 | struct v4l2_event_subscription *sub); | 502 | struct v4l2_event_subscription *sub); |
500 | void v4l2_ctrl_del_fh(struct v4l2_ctrl *ctrl, struct v4l2_fh *fh); | 503 | void v4l2_ctrl_del_fh(struct v4l2_ctrl *ctrl, struct v4l2_fh *fh); |
501 | 504 | ||
505 | /** v4l2_ctrl_subscribe_fh() - Helper function that subscribes a control event. | ||
506 | * @fh: The file handler that subscribed the control event. | ||
507 | * @sub: The event to subscribe (type must be V4L2_EVENT_CTRL). | ||
508 | * @n: How many events should be allocated? (Passed to v4l2_event_alloc). | ||
509 | * Recommended to set to twice the number of controls plus whatever | ||
510 | * is needed for other events. This function will set n to | ||
511 | * max(n, 2 * fh->ctrl_handler->nr_of_refs). | ||
512 | * | ||
513 | * A helper function that initializes the fh for events, allocates the | ||
514 | * list of events and subscribes the control event. | ||
515 | * | ||
516 | * Typically called in the handler of VIDIOC_SUBSCRIBE_EVENT in the | ||
517 | * V4L2_EVENT_CTRL case. | ||
518 | */ | ||
519 | int v4l2_ctrl_subscribe_fh(struct v4l2_fh *fh, | ||
520 | struct v4l2_event_subscription *sub, unsigned n); | ||
521 | |||
502 | /* Helpers for ioctl_ops. If hdl == NULL then they will all return -EINVAL. */ | 522 | /* Helpers for ioctl_ops. If hdl == NULL then they will all return -EINVAL. */ |
503 | int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc); | 523 | int v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc); |
504 | int v4l2_querymenu(struct v4l2_ctrl_handler *hdl, struct v4l2_querymenu *qm); | 524 | int v4l2_querymenu(struct v4l2_ctrl_handler *hdl, struct v4l2_querymenu *qm); |