From f0c1e39fb78204e53bfa5fa40c7f7910dc6b67da Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Thu, 15 Nov 2012 15:57:08 -0500 Subject: [PATCH] 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 b03fffd69..3996bd66d 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 1fd845f53..d01aff3d9 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 ());