[gtk+/touch-for-3.4] gdk: Add some debug output for touch events and devices



commit 3e9b4f9deb64a8a0c3fa4eb39f32c136dbcfec8b
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Feb 29 00:44:51 2012 -0500

    gdk: Add some debug output for touch events and devices

 gdk/x11/gdkdevicemanager-xi2.c |   43 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 37 insertions(+), 6 deletions(-)
---
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index 7f3f156..480f137 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -255,7 +255,8 @@ translate_device_classes (GdkDisplay      *display,
 static gboolean
 is_touch_device (XIAnyClassInfo **classes,
                  guint            n_classes,
-                 GdkInputSource  *device_type)
+                 GdkInputSource  *device_type,
+                 gint            *num_touches)
 {
 #ifdef XINPUT_2_2
   guint i;
@@ -276,6 +277,8 @@ is_touch_device (XIAnyClassInfo **classes,
           else
             continue;
 
+          *num_touches = class->num_touches;
+
           return TRUE;
         }
     }
@@ -294,11 +297,12 @@ create_device (GdkDeviceManager *device_manager,
   GdkDeviceType type;
   GdkDevice *device;
   GdkInputMode mode;
+  gint num_touches = 0;
 
   if (dev->use == XIMasterKeyboard || dev->use == XISlaveKeyboard)
     input_source = GDK_SOURCE_KEYBOARD;
   else if (dev->use == XISlavePointer &&
-           is_touch_device (dev->classes, dev->num_classes, &touch_source))
+           is_touch_device (dev->classes, dev->num_classes, &touch_source, &num_touches))
     input_source = touch_source;
   else
     {
@@ -342,6 +346,20 @@ create_device (GdkDeviceManager *device_manager,
       break;
     }
 
+  GDK_NOTE (INPUT,
+            ({
+              const gchar *type_names[] = { "master", "slave", "floating" };
+              const gchar *source_names[] = { "mouse", "pen", "eraser", "cursor", "keyboard", "direct touch", "indirect touch" };
+              const gchar *mode_names[] = { "disabled", "screen", "window" };
+              g_message ("input device:\n\tname: %s\n\ttype: %s\n\tsource: %s\n\tmode: %s\n\thas cursor: %d\n\ttouches: %d",
+                         dev->name,
+                         type_names[type],
+                         source_names[input_source],
+                         mode_names[mode],
+                         dev->use == XIMasterPointer,
+                         num_touches);
+            }));
+
   device = g_object_new (GDK_TYPE_X11_DEVICE_XI2,
                          "name", dev->name,
                          "type", type,
@@ -1195,7 +1213,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
             event->button.button = xev->detail;
           }
 
-        if (xev->flags & (XIPointerEmulated | XITouchEmulatingPointer))
+        if (xev->flags & XIPointerEmulated)
           _gdk_event_set_pointer_emulated (event, TRUE);
 
         if (return_val == FALSE)
@@ -1235,7 +1253,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
 
         event->motion.state = _gdk_x11_device_xi2_translate_state (&xev->mods, &xev->buttons, &xev->group);
 
-        if (xev->flags & (XIPointerEmulated | XITouchEmulatingPointer))
+        if (xev->flags & XIPointerEmulated)
           _gdk_event_set_pointer_emulated (event, TRUE);
 
         /* There doesn't seem to be motion hints in XI */
@@ -1265,6 +1283,13 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
         XIDeviceEvent *xev = (XIDeviceEvent *) ev;
         GdkDevice *source_device;
 
+        GDK_NOTE(EVENTS,
+                 g_message ("touch %s:\twindow %ld\n\ttouch id: %u\n\tpointer emulating: %d",
+                            ev->evtype == XI_TouchBegin ? "begin" : "end",
+                            xev->event,
+                            xev->detail,
+                            xev->flags & XITouchEmulatingPointer));
+
         if (ev->evtype == XI_TouchBegin)
           event->touch.type = GDK_TOUCH_BEGIN;
         else if (ev->evtype == XI_TouchEnd)
@@ -1306,7 +1331,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
 
         event->touch.sequence = GUINT_TO_POINTER (xev->detail);
 
-        if (xev->flags & (XIPointerEmulated | XITouchEmulatingPointer))
+        if (xev->flags & XITouchEmulatingPointer)
           _gdk_event_set_pointer_emulated (event, TRUE);
 
         if (return_val == FALSE)
@@ -1328,6 +1353,12 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
         XIDeviceEvent *xev = (XIDeviceEvent *) ev;
         GdkDevice *source_device;
 
+        GDK_NOTE(EVENTS,
+                 g_message ("touch update:\twindow %ld\n\ttouch id: %u\n\tpointer emulating: %d",
+                            xev->event,
+                            xev->detail,
+                            xev->flags & XITouchEmulatingPointer));
+
         event->touch.window = window;
         event->touch.sequence = GUINT_TO_POINTER (xev->detail);
         event->touch.type = GDK_TOUCH_UPDATE;
@@ -1348,7 +1379,7 @@ gdk_x11_device_manager_xi2_translate_event (GdkEventTranslator *translator,
 
         event->touch.state |= GDK_BUTTON1_MASK;
 
-        if (xev->flags & (XIPointerEmulated | XITouchEmulatingPointer))
+        if (xev->flags & XITouchEmulatingPointer)
           _gdk_event_set_pointer_emulated (event, TRUE);
 
         event->touch.axes = translate_axes (event->touch.device,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]