diff options
author | Hans de Goede <hdegoede@redhat.com> | 2012-04-08 17:59:47 +0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-05-07 21:29:35 +0200 |
commit | 3e366149b8957f809081e5f0f70d209175127e29 (patch) | |
tree | 7ba69744a1bacd7b490d02d02d265e42f4c4e7a9 /drivers/media/video/v4l2-event.c | |
parent | [media] v4l2-event: Add v4l2_subscribed_event_ops (diff) | |
download | linux-3e366149b8957f809081e5f0f70d209175127e29.tar.xz linux-3e366149b8957f809081e5f0f70d209175127e29.zip |
[media] v4l2-ctrls: Use v4l2_subscribed_event_ops
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
[hans.verkuil@cisco.com: Fix a locking bug]
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/v4l2-event.c')
-rw-r--r-- | drivers/media/video/v4l2-event.c | 39 |
1 files changed, 0 insertions, 39 deletions
diff --git a/drivers/media/video/v4l2-event.c b/drivers/media/video/v4l2-event.c index 0ba2dfa86d07..60b4e2e9c874 100644 --- a/drivers/media/video/v4l2-event.c +++ b/drivers/media/video/v4l2-event.c @@ -25,7 +25,6 @@ #include <media/v4l2-dev.h> #include <media/v4l2-fh.h> #include <media/v4l2-event.h> -#include <media/v4l2-ctrls.h> #include <linux/sched.h> #include <linux/slab.h> @@ -203,30 +202,11 @@ int v4l2_event_pending(struct v4l2_fh *fh) } EXPORT_SYMBOL_GPL(v4l2_event_pending); -static void ctrls_replace(struct v4l2_event *old, const struct v4l2_event *new) -{ - u32 old_changes = old->u.ctrl.changes; - - old->u.ctrl = new->u.ctrl; - old->u.ctrl.changes |= old_changes; -} - -static void ctrls_merge(const struct v4l2_event *old, struct v4l2_event *new) -{ - new->u.ctrl.changes |= old->u.ctrl.changes; -} - -static const struct v4l2_subscribed_event_ops ctrl_ops = { - .replace = ctrls_replace, - .merge = ctrls_merge, -}; - int v4l2_event_subscribe(struct v4l2_fh *fh, struct v4l2_event_subscription *sub, unsigned elems, const struct v4l2_subscribed_event_ops *ops) { struct v4l2_subscribed_event *sev, *found_ev; - struct v4l2_ctrl *ctrl = NULL; unsigned long flags; unsigned i; @@ -235,11 +215,6 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, if (elems < 1) elems = 1; - if (sub->type == V4L2_EVENT_CTRL) { - ctrl = v4l2_ctrl_find(fh->ctrl_handler, sub->id); - if (ctrl == NULL) - return -EINVAL; - } sev = kzalloc(sizeof(*sev) + sizeof(struct v4l2_kevent) * elems, GFP_KERNEL); if (!sev) @@ -251,9 +226,6 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, sev->flags = sub->flags; sev->fh = fh; sev->ops = ops; - if (ctrl) { - sev->ops = &ctrl_ops; - } spin_lock_irqsave(&fh->vdev->fh_lock, flags); found_ev = v4l2_event_subscribed(fh, sub->type, sub->id); @@ -275,10 +247,6 @@ int v4l2_event_subscribe(struct v4l2_fh *fh, } } - /* v4l2_ctrl_add_event uses a mutex, so do this outside the spin lock */ - if (ctrl) - v4l2_ctrl_add_event(ctrl, sev); - /* Mark as ready for use */ sev->elems = elems; @@ -338,13 +306,6 @@ int v4l2_event_unsubscribe(struct v4l2_fh *fh, if (sev && sev->ops && sev->ops->del) sev->ops->del(sev); - if (sev && sev->type == V4L2_EVENT_CTRL) { - struct v4l2_ctrl *ctrl = v4l2_ctrl_find(fh->ctrl_handler, sev->id); - - if (ctrl) - v4l2_ctrl_del_event(ctrl, sev); - } - kfree(sev); return 0; |