summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2021-02-19 07:40:46 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2021-02-23 10:56:53 +1000
commit627a3dd2b2475c056c845b71525ba5369cf01c95 (patch)
tree0941c15000ffaf0ec9106d87d542e3b1e03ac381
parent4a7dece88cde97537bddbd9b580c470433738cf0 (diff)
downloadlibinput-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.c41
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 = &current->events[current->nevents++];
+ event = next_event(current);
event->type = LIBINPUT;
buffer_libinput_event(ctx, e, event);