diff --git a/src/libei-event.c b/src/libei-event.c index 4cbaa28..d06e258 100644 --- a/src/libei-event.c +++ b/src/libei-event.c @@ -88,6 +88,17 @@ ei_event_new(struct ei *ei) return ei_event_create(&ei->object); } +struct ei_event * +ei_event_new_for_device(struct ei_device *device) +{ + struct ei_event *event = ei_event_new(ei_device_get_context(device)); + + event->seat = ei_seat_ref(ei_device_get_seat(device)); + event->device = ei_device_ref(device); + + return event; +} + static struct ei * ei_event_get_context(struct ei_event *event) { diff --git a/src/libei-private.h b/src/libei-private.h index d3b5188..ec6c89c 100644 --- a/src/libei-private.h +++ b/src/libei-private.h @@ -206,6 +206,9 @@ ei_property_update(struct ei *ei, const char *name, struct ei_event * ei_event_new(struct ei *ei); +struct ei_event * +ei_event_new_for_device(struct ei_device *device); + struct ei_event * ei_event_ref(struct ei_event *event); diff --git a/src/libei.c b/src/libei.c index 2543b07..a034ff0 100644 --- a/src/libei.c +++ b/src/libei.c @@ -252,11 +252,9 @@ static void queue_device_added_event(struct ei_device *device) { struct ei *ei= ei_device_get_context(device); + struct ei_event *e = ei_event_new_for_device(device); - struct ei_event *e = ei_event_new(ei); e->type = EI_EVENT_DEVICE_ADDED; - e->seat = ei_seat_ref(ei_device_get_seat(device)); - e->device = ei_device_ref(device); queue_event(ei, e); } @@ -265,11 +263,9 @@ static void queue_device_removed_event(struct ei_device *device) { struct ei *ei= ei_device_get_context(device); + struct ei_event *e = ei_event_new_for_device(device); - struct ei_event *e = ei_event_new(ei); e->type = EI_EVENT_DEVICE_REMOVED; - e->seat = ei_seat_ref(ei_device_get_seat(device)); - e->device = ei_device_ref(device); queue_event(ei, e); } @@ -278,11 +274,9 @@ static void insert_device_removed_event(struct ei_device *device) { struct ei *ei= ei_device_get_context(device); + struct ei_event *e = ei_event_new_for_device(device); - struct ei_event *e = ei_event_new(ei); e->type = EI_EVENT_DEVICE_REMOVED; - e->seat = ei_seat_ref(ei_device_get_seat(device)); - e->device = ei_device_ref(device); insert_event(ei, e); } @@ -291,11 +285,9 @@ static void queue_paused_event(struct ei_device *device) { struct ei *ei= ei_device_get_context(device); + struct ei_event *e = ei_event_new_for_device(device); - struct ei_event *e = ei_event_new(ei); e->type = EI_EVENT_DEVICE_PAUSED; - e->seat = ei_seat_ref(ei_device_get_seat(device)); - e->device = ei_device_ref(device); queue_event(ei, e); } @@ -304,11 +296,9 @@ static void queue_resumed_event(struct ei_device *device) { struct ei *ei= ei_device_get_context(device); + struct ei_event *e = ei_event_new_for_device(device); - struct ei_event *e = ei_event_new(ei); e->type = EI_EVENT_DEVICE_RESUMED; - e->seat = ei_seat_ref(ei_device_get_seat(device)); - e->device = ei_device_ref(device); queue_event(ei, e); } @@ -318,11 +308,9 @@ queue_keyboard_modifiers_event(struct ei_device *device, const struct ei_xkb_modifiers *mods) { struct ei *ei= ei_device_get_context(device); + struct ei_event *e = ei_event_new_for_device(device); - struct ei_event *e = ei_event_new(ei); e->type = EI_EVENT_KEYBOARD_MODIFIERS; - e->seat = ei_seat_ref(ei_device_get_seat(device)); - e->device = ei_device_ref(device); e->modifiers = *mods; queue_event(ei, e);