[mutter/wip/multitouchr: 65/73] core: Add meta_input_event_get_source_device()
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/multitouchr: 65/73] core: Add meta_input_event_get_source_device()
- Date: Sat, 3 Nov 2012 23:55:41 +0000 (UTC)
commit 36de9cf11dbcd8fceb945b1c56b47230715effed
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Sep 2 21:15:41 2011 +0200
core: Add meta_input_event_get_source_device()
This function would return the slave device behind and
event, this is mostly needed for touch passive grabs,
as XIAllowTouchEvents() at the moment requires a slave
device, this has changed in the latest drafts of the
multitouch protocol.
src/core/input-events.c | 43 +++++++++++++++++++++++++++++++++++++++++++
src/core/input-events.h | 3 ++-
2 files changed, 45 insertions(+), 1 deletions(-)
---
diff --git a/src/core/input-events.c b/src/core/input-events.c
index 46e7554..c0110ff 100644
--- a/src/core/input-events.c
+++ b/src/core/input-events.c
@@ -777,3 +777,46 @@ meta_input_event_get_device (MetaDisplay *display,
return NULL;
}
+
+MetaDevice *
+meta_input_event_get_source_device (MetaDisplay *display,
+ XEvent *ev)
+{
+#ifdef HAVE_XINPUT2
+ if (ev->type == GenericEvent &&
+ ev->xcookie.extension == display->xinput2_opcode)
+ {
+ XIEvent *xev;
+
+ g_assert (display->have_xinput2 == TRUE);
+
+ xev = (XIEvent *) ev->xcookie.data;
+
+ switch (xev->evtype)
+ {
+ case XI_Motion:
+ case XI_ButtonPress:
+ case XI_ButtonRelease:
+ case XI_KeyPress:
+ case XI_KeyRelease:
+#ifdef HAVE_XTOUCH
+ case XI_TouchBegin:
+ case XI_TouchEnd:
+ case XI_TouchUpdate:
+#endif /* HAVE_XTOUCH */
+ return meta_device_map_lookup (display->device_map,
+ ((XIDeviceEvent *) xev)->sourceid);
+ case XI_FocusIn:
+ case XI_FocusOut:
+ case XI_Enter:
+ case XI_Leave:
+ return meta_device_map_lookup (display->device_map,
+ ((XIEnterEvent *) xev)->sourceid);
+ default:
+ break;
+ }
+ }
+#endif
+
+ return NULL;
+}
diff --git a/src/core/input-events.h b/src/core/input-events.h
index 939764d..a53d1e3 100644
--- a/src/core/input-events.h
+++ b/src/core/input-events.h
@@ -80,6 +80,7 @@ gboolean meta_input_event_get_crossing_details (MetaDisplay *display,
MetaDevice *meta_input_event_get_device (MetaDisplay *display,
XEvent *ev);
-
+MetaDevice *meta_input_event_get_source_device (MetaDisplay *display,
+ XEvent *ev);
#endif /* META_EVENT_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]