[Xfce4-commits] <xfce4-settings:xfce-4.6> Fix the check for Xi so it does not fail with Xi2 (bug #4929).

Nick Schermer noreply at xfce.org
Sun Oct 11 14:26:01 CEST 2009


Updating branch refs/heads/xfce-4.6
         to 041cb4450d1d7c525c3fde20c38e293665619bd3 (commit)
       from 84f3f6887cfa97dd8c05cf0f88516dea34b160fb (commit)

commit 041cb4450d1d7c525c3fde20c38e293665619bd3
Author: Nick Schermer <nick at xfce.org>
Date:   Sun Oct 11 14:02:05 2009 +0200

    Fix the check for Xi so it does not fail with Xi2 (bug #4929).

 dialogs/mouse-settings/main.c    |   22 +++++++++++++++++-----
 xfce4-settings-helper/pointers.c |   28 ++++++++++++++++++----------
 2 files changed, 35 insertions(+), 15 deletions(-)

diff --git a/dialogs/mouse-settings/main.c b/dialogs/mouse-settings/main.c
index dc5604d..6edddac 100644
--- a/dialogs/mouse-settings/main.c
+++ b/dialogs/mouse-settings/main.c
@@ -60,6 +60,10 @@
 #define IsXExtensionPointer 4
 #endif
 
+/* Xi 1.4 is required */
+#define MIN_XI_VERS_MAJOR 1
+#define MIN_XI_VERS_MINOR 4
+
 /* settings */
 #ifdef HAVE_XCURSOR
 #define PREVIEW_ROWS    (3)
@@ -1221,13 +1225,21 @@ main (gint argc, gchar **argv)
 
         return EXIT_FAILURE;
     }
-    
-    /* check for Xi 1.4 */
+
+    /* check for Xi */
     version = XGetExtensionVersion (GDK_DISPLAY (), INAME);
-    if (!version || !version->present || version->major_version < 1 || version->minor_version < 4)
+    if (version == NULL || !version->present)
+    {
+        g_critical ("XI is not present.");
+        return EXIT_FAILURE;
+    }
+    else if (version->major_version < MIN_XI_VERS_MAJOR
+             || (version->major_version == MIN_XI_VERS_MAJOR
+                 && version->minor_version < MIN_XI_VERS_MINOR))
     {
-        g_critical ("XI is not present or too old.");
-        
+        g_critical ("Your XI is too old (%d.%d) version %d.%d is required.",
+                    version->major_version, version->minor_version,
+                    MIN_XI_VERS_MAJOR, MIN_XI_VERS_MINOR);
         return EXIT_FAILURE;
     }
 
diff --git a/xfce4-settings-helper/pointers.c b/xfce4-settings-helper/pointers.c
index 6dd2cd4..b8718ba 100644
--- a/xfce4-settings-helper/pointers.c
+++ b/xfce4-settings-helper/pointers.c
@@ -42,6 +42,10 @@
 
 #define MAX_DENOMINATOR (100.00)
 
+/* Xi 1.4 is required */
+#define MIN_XI_VERS_MAJOR 1
+#define MIN_XI_VERS_MINOR 4
+
 /* test if the required version of inputproto (1.4.2) is available */
 #if XI_Add_DevicePresenceNotify_Major >= 1 && defined (DeviceRemoved)
 #define HAS_DEVICE_HOTPLUGGING
@@ -133,18 +137,22 @@ xfce_pointers_helper_init (XfcePointersHelper *helper)
 
     /* get the default display */
     xdisplay = gdk_x11_display_get_xdisplay (gdk_display_get_default ());
-    
+
     /* query the extension version */
     version = XGetExtensionVersion (xdisplay, INAME);
-    
-    /* check for Xi 1.4 */
-    if (!version || !version->present || version->major_version < 1 || version->minor_version < 4)
-    {
-        /* print error */
-        g_critical ("XI is not present or too old.");
 
-        /* no channel */
-        helper->channel = NULL;
+    /* check for Xi */
+    if (version == NULL || !version->present)
+    {
+        g_critical ("XI is not present.");
+    }
+    else if (version->major_version < MIN_XI_VERS_MAJOR
+             || (version->major_version == MIN_XI_VERS_MAJOR
+                 && version->minor_version < MIN_XI_VERS_MINOR))
+    {
+        g_critical ("Your XI is too old (%d.%d) version %d.%d is required.",
+                    version->major_version, version->minor_version,
+                    MIN_XI_VERS_MAJOR, MIN_XI_VERS_MINOR);
     }
     else
     {
@@ -162,7 +170,7 @@ xfce_pointers_helper_init (XfcePointersHelper *helper)
         gdk_flush ();
         gdk_error_trap_push ();
 
-        
+
         if (G_LIKELY (xdisplay))
         {
             /* monitor device changes */



More information about the Xfce4-commits mailing list