[gtk+/xi2: 664/1239] Adapt to XI2 changes in Xorg master.
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+/xi2: 664/1239] Adapt to XI2 changes in Xorg master.
- Date: Tue, 29 Sep 2009 10:49:25 +0000 (UTC)
commit 1a19b854d4f7559113568c28e69aa73b6bd5b0b2
Author: Carlos Garnacho <carlos lanedo com>
Date: Fri Jul 31 12:49:13 2009 +0200
Adapt to XI2 changes in Xorg master.
gdk/x11/gdkdevicemanager-xi2.c | 39 +++++++++++++++++++++++++++------------
1 files changed, 27 insertions(+), 12 deletions(-)
---
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index 4c98db7..c03bb9b 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -708,20 +708,35 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
XEvent *xevent)
{
GdkDeviceManagerXI2 *device_manager;
- XIEvent *ev;
+ XGenericEventCookie *cookie;
gboolean return_val = TRUE;
+ XIEvent *ev;
+ Display *dpy;
- ev = (XIEvent *) xevent;
+ dpy = GDK_DISPLAY_XDISPLAY (display);
device_manager = (GdkDeviceManagerXI2 *) translator;
+ cookie = &xevent->xcookie;
- if (ev->type != GenericEvent || ev->extension != device_manager->opcode)
+ if (!XGetEventData (dpy, cookie))
return FALSE;
+ if (cookie->type != GenericEvent ||
+ cookie->extension != device_manager->opcode)
+ {
+ XFreeEventData (dpy, cookie);
+ return FALSE;
+ }
+
+ ev = (XIEvent *) cookie->data;
+
if (ev->evtype == XI_Motion ||
ev->evtype == XI_ButtonRelease)
{
if (_gdk_moveresize_handle_event (xevent))
- return FALSE;
+ {
+ XFreeEventData (dpy, cookie);
+ return FALSE;
+ }
}
switch (ev->evtype)
@@ -742,7 +757,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->key.window = gdk_window_lookup_for_display (display, xev->event);
event->key.time = xev->time;
- event->key.state = translate_state (xev->mods, xev->buttons);
+ event->key.state = translate_state (&xev->mods, &xev->buttons);
event->key.group = _gdk_x11_get_group_for_state (display, event->key.state);
event->key.hardware_keycode = xev->detail;
@@ -800,7 +815,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->scroll.device = g_hash_table_lookup (device_manager->id_table,
GUINT_TO_POINTER (xev->deviceid));
- event->scroll.state = translate_state (xev->mods, xev->buttons);
+ event->scroll.state = translate_state (&xev->mods, &xev->buttons);
break;
default:
event->button.type = (ev->evtype == XI_ButtonPress) ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE;
@@ -815,8 +830,8 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->button.device = g_hash_table_lookup (device_manager->id_table,
GUINT_TO_POINTER (xev->deviceid));
- event->button.axes = translate_axes (event->button.device, xev->valuators);
- event->button.state = translate_state (xev->mods, xev->buttons);
+ event->button.axes = translate_axes (event->button.device, &xev->valuators);
+ event->button.state = translate_state (&xev->mods, &xev->buttons);
event->button.button = xev->detail;
}
@@ -852,12 +867,12 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->motion.device = g_hash_table_lookup (device_manager->id_table,
GINT_TO_POINTER (xev->deviceid));
- event->motion.state = translate_state (xev->mods, xev->buttons);
+ event->motion.state = translate_state (&xev->mods, &xev->buttons);
/* FIXME: There doesn't seem to be motion hints in XI */
event->motion.is_hint = FALSE;
- event->motion.axes = translate_axes (event->motion.device, xev->valuators);
+ event->motion.axes = translate_axes (event->motion.device, &xev->valuators);
}
break;
case XI_Enter:
@@ -881,7 +896,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->crossing.mode = translate_crossing_mode (xev->mode);
event->crossing.detail = translate_notify_type (xev->detail);
- event->crossing.state = translate_state (xev->mods, xev->buttons);
+ event->crossing.state = translate_state (&xev->mods, &xev->buttons);
}
break;
case XI_FocusIn:
@@ -920,7 +935,7 @@ gdk_device_manager_xi2_translate_event (GdkEventTranslator *translator,
event->any.type = GDK_NOTHING;
}
- XIFreeEventData (ev);
+ XFreeEventData (dpy, cookie);
return return_val;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]