Add libinput_event_get_context()
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 19 Dec 2013 01:22:53 +0000 (11:22 +1000)
committerJonas Ådahl <jadahl@gmail.com>
Thu, 16 Jan 2014 19:55:23 +0000 (20:55 +0100)
Add a function to retrieve the libinput context from any event.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
src/libinput.c
src/libinput.h

index a9e458f..d2e7596 100644 (file)
@@ -50,6 +50,7 @@ struct libinput_source {
 
 struct libinput_event {
        enum libinput_event_type type;
+       struct libinput *libinput;
        union libinput_event_target target;
 };
 
@@ -133,6 +134,12 @@ libinput_event_get_target(struct libinput_event *event)
        return event->target;
 }
 
+LIBINPUT_EXPORT struct libinput*
+libinput_event_get_context(struct libinput_event *event)
+{
+       return event->libinput;
+}
+
 LIBINPUT_EXPORT struct libinput_seat *
 libinput_event_added_seat_get_seat(struct libinput_event_added_seat *event)
 {
@@ -596,10 +603,12 @@ libinput_dispatch(struct libinput *libinput)
 
 static void
 init_event_base(struct libinput_event *event,
+               struct libinput *libinput,
                enum libinput_event_type type,
                union libinput_event_target target)
 {
        event->type = type;
+       event->libinput = libinput;
        event->target = target;
 }
 
@@ -608,7 +617,7 @@ post_base_event(struct libinput *libinput,
                enum libinput_event_type type,
                struct libinput_event *event)
 {
-       init_event_base(event, type,
+       init_event_base(event, libinput, type,
                        (union libinput_event_target) { .libinput = libinput });
        libinput_post_event(libinput, event);
 }
@@ -618,7 +627,7 @@ post_device_event(struct libinput_device *device,
                  enum libinput_event_type type,
                  struct libinput_event *event)
 {
-       init_event_base(event, type,
+       init_event_base(event, device->seat->libinput, type,
                        (union libinput_event_target) { .device = device });
        libinput_post_event(device->seat->libinput, event);
 }
index 894312d..5f4f51e 100644 (file)
@@ -241,6 +241,17 @@ union libinput_event_target
 libinput_event_get_target(struct libinput_event *event);
 
 /**
+ * @ingroup event
+ *
+ * Get the libinput context from the event.
+ *
+ * @param event The libinput event
+ * @return The libinput context for this event.
+ */
+struct libinput*
+libinput_event_get_context(struct libinput_event *event);
+
+/**
  * @defgroup event_added_seat Added seat event
  */