]> Pileus Git - ~andy/gtk/commitdiff
configure.ac: Improve the checks for XInput 2.2
authorMatthias Clasen <mclasen@redhat.com>
Tue, 6 Mar 2012 12:45:04 +0000 (07:45 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 6 Mar 2012 12:45:04 +0000 (07:45 -0500)
Check for the XIScrollClassInfo struct in addition to the existing
check for XIAllowTouchEvents() because Ubuntu Oneiric seems to
have an incomplete backport which has one but not the other.

Based on a patch by Murray Cumming,
https://bugzilla.gnome.org/show_bug.cgi?id=671453

configure.ac

index 17c560afb86848758d96de149a401e5eb740ecd4..616ee785847c7c2798380cea00301722387fa974 100644 (file)
@@ -1114,13 +1114,26 @@ if test "x$enable_x11_backend" = xyes; then
 
     AC_CHECK_HEADER(X11/extensions/XInput2.h,
                     have_xinput2=yes
-                    X_EXTENSIONS="$X_EXTENSIONS XI2"
                     AC_DEFINE(XINPUT_2, 1, [Define to 1 if XInput 2.0 is available]))
 
     gtk_save_LIBS="$LIBS"
     LIBS="$LIBS -lXi"
-    AC_CHECK_FUNC(XIAllowTouchEvents, AC_DEFINE(XINPUT_2_2, 1, [Define to 1 if XInput 2.2 is available]))
+
+    # Note that we also check that the XIScrollClassInfo struct is defined,
+    # because at least Ubuntu Oneiric seems to have XIAllowTouchEvents(), but not the XIScrollClassInfo struct.
+    AC_CHECK_FUNC([XIAllowTouchEvents],
+      [AC_CHECK_MEMBER([XIScrollClassInfo.number],
+                       have_xinput2_2=yes
+                       AC_DEFINE(XINPUT_2_2, 1, [Define to 1 if XInput 2.2 is available]),
+                       have_xinput2_2=no,
+                       [[#include <X11/extensions/XInput2.h>]])])
     LIBS="$gtk_save_LIBS"
+
+    if test "x$have_xinput2_2" = "xyes"; then
+      X_EXTENSIONS="$X_EXTENSIONS XI2.2"
+    else
+      X_EXTENSIONS="$X_EXTENSIONS XI2"
+    fi
   fi
 
   AM_CONDITIONAL(XINPUT_2,     test "x$have_xinput2" = "xyes")