Add sequence numbers to events. Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxxxxxxxxxxxxx> --- drivers/media/video/v4l2-event.c | 16 +++++++++++++--- include/media/v4l2-event.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/media/video/v4l2-event.c b/drivers/media/video/v4l2-event.c index bbdc149..0af0de5 100644 --- a/drivers/media/video/v4l2-event.c +++ b/drivers/media/video/v4l2-event.c @@ -95,6 +95,7 @@ int v4l2_event_init(struct v4l2_fh *fh, unsigned int n, unsigned int max_alloc) fh->events->navailable = 0; fh->events->max_alloc = max_alloc; + fh->events->sequence = -1; ret = v4l2_event_alloc(fh, n); if (ret < 0) @@ -175,15 +176,24 @@ void v4l2_event_queue(struct video_device *vdev, struct v4l2_event *ev) list_for_each_entry(fh, &vdev->fh_list, list) { struct v4l2_events *events = fh->events; struct v4l2_kevent *kev; + u32 sequence; - /* Do we have any free events and are we subscribed? */ - if (list_empty(&events->free) || - !__v4l2_event_subscribed(fh, ev->type)) + /* Are we subscribed? */ + if (!__v4l2_event_subscribed(fh, ev->type)) + continue; + + /* Increase event sequence number on fh. */ + events->sequence++; + sequence = events->sequence; + + /* Do we have any free events? */ + if (list_empty(&events->free)) continue; /* Take one and fill it. */ kev = list_first_entry(&events->free, struct v4l2_kevent, list); kev->event = *ev; + kev->event.sequence = sequence; list_move_tail(&kev->list, &events->available); events->navailable++; diff --git a/include/media/v4l2-event.h b/include/media/v4l2-event.h index 671c8f7..5760597 100644 --- a/include/media/v4l2-event.h +++ b/include/media/v4l2-event.h @@ -50,6 +50,7 @@ struct v4l2_events { unsigned int navailable; unsigned int max_alloc; /* Never allocate more. */ struct list_head free; /* Events ready for use */ + u32 sequence; }; int v4l2_event_alloc(struct v4l2_fh *fh, unsigned int n); -- 1.5.6.5 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html