[mutter] display: Initialize XInput2



commit f0c1e39fb78204e53bfa5fa40c7f7910dc6b67da
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Thu Nov 15 15:57:08 2012 -0500

    display: Initialize XInput2
    
    Make sure it's the correct version.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=688779

 src/core/display-private.h |    5 ++++-
 src/core/display.c         |   21 ++++++++++++++++++++-
 2 files changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/src/core/display-private.h b/src/core/display-private.h
index b03fffd..3996bd6 100644
--- a/src/core/display-private.h
+++ b/src/core/display-private.h
@@ -283,7 +283,10 @@ struct _MetaDisplay
   int damage_error_base;
   int xfixes_event_base;
   int xfixes_error_base;
-  
+  int xinput_error_base;
+  int xinput_event_base;
+  int xinput_opcode;
+
 #ifdef HAVE_STARTUP_NOTIFICATION
   SnDisplay *sn_display;
 #endif
diff --git a/src/core/display.c b/src/core/display.c
index 1fd845f..d01aff3 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -779,7 +779,26 @@ meta_display_open (void)
                   the_display->xfixes_error_base, 
                   the_display->xfixes_event_base);
   }
-      
+
+  {
+    int major = 2, minor = 2;
+    gboolean has_xi = FALSE;
+
+    if (XQueryExtension (the_display->xdisplay,
+                         "XInputExtension",
+                         &the_display->xinput_opcode,
+                         &the_display->xinput_error_base,
+                         &the_display->xinput_event_base))
+      {
+        if (XIQueryVersion (the_display->xdisplay, &major, &minor) == Success)
+          if (((major * 10) + minor) >= 22)
+            has_xi = TRUE;
+      }
+
+    if (!has_xi)
+      meta_fatal ("X server doesn't have the XInput extension, version 2.2 or newer\n");
+  }
+
 #ifdef HAVE_XCURSOR
   {
     XcursorSetTheme (the_display->xdisplay, meta_prefs_get_cursor_theme ());



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