gpointing-device-settings r176 - trunk/src



Author: hiikezoe
Date: Sun Mar  8 05:29:39 2009
New Revision: 176
URL: http://svn.gnome.org/viewvc/gpointing-device-settings?rev=176&view=rev

Log:
added +gpds_xinput_utils_get_device_num_buttons.

Modified:
   trunk/src/gpds-xinput-utils.c
   trunk/src/gpds-xinput-utils.h

Modified: trunk/src/gpds-xinput-utils.c
==============================================================================
--- trunk/src/gpds-xinput-utils.c	(original)
+++ trunk/src/gpds-xinput-utils.c	Sun Mar  8 05:29:39 2009
@@ -46,8 +46,10 @@
     for (i = 0; i < n_device_infos; i++) {
         if (device_infos[i].use != IsXExtensionPointer)
             continue;
-        if (!strcmp(device_infos[i].name, device_name))
+        if (!strcmp(device_infos[i].name, device_name)) {
+            XFreeDeviceList(device_infos);
             return &device_infos[i];
+        }
     }
 
     XFreeDeviceList(device_infos);
@@ -55,6 +57,36 @@
     return NULL;
 }
 
+gshort
+gpds_xinput_utils_get_device_num_buttons (const gchar *device_name, GError **error)
+{
+    XDeviceInfo *device_info;
+    XAnyClassInfo *class_info;
+    gint i;
+
+    device_info = gpds_xinput_utils_get_device_info(device_name);
+    if (!device_info) {
+        g_set_error(error,
+                    GPDS_XINPUT_UTILS_ERROR,
+                    GPDS_XINPUT_UTILS_ERROR_NO_DEVICE,
+                    _("No %s found."), device_name);
+        return -1;
+    }
+
+    for (i = 0, class_info = device_info->inputclassinfo;
+         i < device_info->num_classes;
+         i++) {
+        if (class_info->class == ButtonClass) {
+            XButtonInfo *button_info;
+
+            button_info = (XButtonInfo *)class_info;
+            return button_info->num_buttons;
+        }
+        class_info = (XAnyClassInfo *)(class_info + class_info->length);
+    }
+    return -1;
+}
+
 XDevice *
 gpds_xinput_utils_open_device (const gchar *device_name, GError **error)
 {

Modified: trunk/src/gpds-xinput-utils.h
==============================================================================
--- trunk/src/gpds-xinput-utils.h	(original)
+++ trunk/src/gpds-xinput-utils.h	Sun Mar  8 05:29:39 2009
@@ -39,6 +39,7 @@
 XDeviceInfo *gpds_xinput_utils_get_device_info          (const gchar *device_name);
 XDevice     *gpds_xinput_utils_open_device              (const gchar *device_name, GError **error);
 Atom         gpds_xinput_utils_get_float_atom           (GError **error);
+gshort       gpds_xinput_utils_get_device_num_buttons   (const gchar *device_name, GError **error);
 gboolean     gpds_xinput_utils_exist_device             (const gchar *device_name);
 
 G_END_DECLS



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