diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2021-02-19 07:40:46 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2021-02-23 10:56:53 +1000 |
commit | 627a3dd2b2475c056c845b71525ba5369cf01c95 (patch) | |
tree | 0941c15000ffaf0ec9106d87d542e3b1e03ac381 | |
parent | 4a7dece88cde97537bddbd9b580c470433738cf0 (diff) | |
download | libinput-627a3dd2b2475c056c845b71525ba5369cf01c95.tar.gz |
tools/record: use a helper function to get the next event for a device
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | tools/libinput-record.c | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/tools/libinput-record.c b/tools/libinput-record.c index 1d9ef7c5..fb5ae4a3 100644 --- a/tools/libinput-record.c +++ b/tools/libinput-record.c @@ -127,6 +127,23 @@ struct record_context { bool stop; }; +#define resize(array_, sz_) \ +{ \ + size_t new_size = (sz_) + 1000; \ + void *tmp = realloc((array_), new_size * sizeof(*(array_))); \ + assert(tmp); \ + (array_) = tmp; \ + (sz_) = new_size; \ +} + +static struct event * +next_event(struct record_device *d) +{ + if (d->nevents == d->events_sz) + resize(d->events, d->events_sz); + return &d->events[d->nevents++]; +} + typedef void (*source_dispatch_t)(struct record_context *ctx, int fd, void *user_data); @@ -365,15 +382,6 @@ print_evdev_event(struct record_context *ctx, desc); } -#define resize(array_, sz_) \ -{ \ - size_t new_size = (sz_) + 1000; \ - void *tmp = realloc((array_), new_size * sizeof(*(array_))); \ - assert(tmp); \ - (array_) = tmp; \ - (sz_) = new_size; \ -} - static size_t handle_evdev_frame(struct record_context *ctx, struct record_device *d) { @@ -393,10 +401,7 @@ handle_evdev_frame(struct record_context *ctx, struct record_device *d) else time = time_offset(ctx, time); - if (d->nevents == d->events_sz) - resize(d->events, d->events_sz); - - event = &d->events[d->nevents++]; + event = next_event(d); event->type = EVDEV; event->time = time; event->u.evdev = e; @@ -422,11 +427,8 @@ handle_evdev_frame(struct record_context *ctx, struct record_device *d) if (d->touch.slot_state != d->touch.last_slot_state) { d->touch.last_slot_state = d->touch.slot_state; - if (d->nevents == d->events_sz) - resize(d->events, d->events_sz); - if (d->touch.slot_state == 0) { - event = &d->events[d->nevents++]; + event = next_event(d); event->type = COMMENT; event->time = last_time; snprintf(event->u.comment, @@ -1399,10 +1401,7 @@ handle_libinput_events(struct record_context *ctx, assert(found); } - if (current->nevents == current->events_sz) - resize(current->events, current->events_sz); - - event = ¤t->events[current->nevents++]; + event = next_event(current); event->type = LIBINPUT; buffer_libinput_event(ctx, e, event); |