Fixed compile error with both new and old Xext headers (bug 1498)
authorSam Lantinga <slouken@libsdl.org>
Wed, 30 May 2012 11:44:57 -0400
changeset 6313 d86efd889847
parent 6312 b3ae153ff088
child 6314 7905438c9c3a
Fixed compile error with both new and old Xext headers (bug 1498)
configure
configure.in
include/SDL_config.h.in
src/video/x11/SDL_x11sym.h
--- a/configure	Wed May 30 11:43:33 2012 -0400
+++ b/configure	Wed May 30 11:44:57 2012 -0400
@@ -22166,6 +22166,140 @@
             fi
             have_video=yes
 
+            { echo "$as_me:$LINENO: checking for const parameter to XextAddDisplay" >&5
+echo $ECHO_N "checking for const parameter to XextAddDisplay... $ECHO_C" >&6; }
+            have_const_param_XextAddDisplay=no
+            cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+              #include <X11/Xlib.h>
+              #include <X11/Xproto.h>
+              #include <X11/extensions/Xext.h>
+              #include <X11/extensions/extutil.h>
+
+int
+main ()
+{
+
+XExtDisplayInfo*
+XextAddDisplay(XExtensionInfo* a,Display* b,_Xconst char* c,XExtensionHooks* d,int e,XPointer f)
+{
+    return (XExtDisplayInfo*)0;
+}
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+            have_const_param_XextAddDisplay=yes
+            cat >>confdefs.h <<\_ACEOF
+#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1
+_ACEOF
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+            { echo "$as_me:$LINENO: result: $have_const_param_XextAddDisplay" >&5
+echo "${ECHO_T}$have_const_param_XextAddDisplay" >&6; }
+
+            { echo "$as_me:$LINENO: checking for XGetEventData in -lX11" >&5
+echo $ECHO_N "checking for XGetEventData in -lX11... $ECHO_C" >&6; }
+if test "${ac_cv_lib_X11_XGetEventData+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lX11  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XGetEventData ();
+int
+main ()
+{
+return XGetEventData ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_X11_XGetEventData=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_X11_XGetEventData=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_XGetEventData" >&5
+echo "${ECHO_T}$ac_cv_lib_X11_XGetEventData" >&6; }
+if test $ac_cv_lib_X11_XGetEventData = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
+_ACEOF
+
+fi
+
+
             # Check whether --enable-video-x11-xcursor was given.
 if test "${enable_video_x11_xcursor+set}" = set; then
   enableval=$enable_video_x11_xcursor;
@@ -22475,9 +22609,9 @@
 
             if test x$enable_video_x11_xinput = xyes; then
                 definitely_enable_video_x11_xinput=no
-                { echo "$as_me:$LINENO: checking for X11/extensions/XInput.h" >&5
-echo $ECHO_N "checking for X11/extensions/XInput.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_X11_extensions_XInput_h+set}" = set; then
+                { echo "$as_me:$LINENO: checking for X11/extensions/XInput2.h" >&5
+echo $ECHO_N "checking for X11/extensions/XInput2.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_X11_extensions_XInput2_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >conftest.$ac_ext <<_ACEOF
@@ -22489,38 +22623,38 @@
 #include <X11/Xlib.h>
 
 
-#include <X11/extensions/XInput.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_X11_extensions_XInput_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_X11_extensions_XInput_h=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XInput_h" >&5
-echo "${ECHO_T}$ac_cv_header_X11_extensions_XInput_h" >&6; }
-if test $ac_cv_header_X11_extensions_XInput_h = yes; then
+#include <X11/extensions/XInput2.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_X11_extensions_XInput2_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_X11_extensions_XInput2_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_XInput2_h" >&5
+echo "${ECHO_T}$ac_cv_header_X11_extensions_XInput2_h" >&6; }
+if test $ac_cv_header_X11_extensions_XInput2_h = yes; then
   have_xinput_h_hdr=yes
 else
   have_xinput_h_hdr=no
@@ -22532,7 +22666,7 @@
                         echo "-- dynamic libXi -> $xinput_lib"
 
 cat >>confdefs.h <<_ACEOF
-#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT "$xinput_lib"
+#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "$xinput_lib"
 _ACEOF
 
                         definitely_enable_video_x11_xinput=yes
@@ -22612,7 +22746,7 @@
             if test x$definitely_enable_video_x11_xinput = xyes; then
 
 cat >>confdefs.h <<\_ACEOF
-#define SDL_VIDEO_DRIVER_X11_XINPUT 1
+#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
 _ACEOF
 
             fi
--- a/configure.in	Wed May 30 11:43:33 2012 -0400
+++ b/configure.in	Wed May 30 11:44:57 2012 -0400
@@ -1091,6 +1091,25 @@
             fi
             have_video=yes
 
+            AC_MSG_CHECKING(for const parameter to XextAddDisplay)
+            have_const_param_XextAddDisplay=no
+            AC_TRY_COMPILE([
+              #include <X11/Xlib.h>
+              #include <X11/Xproto.h>
+              #include <X11/extensions/Xext.h>
+              #include <X11/extensions/extutil.h>
+            ],[
+XExtDisplayInfo*
+XextAddDisplay(XExtensionInfo* a,Display* b,_Xconst char* c,XExtensionHooks* d,int e,XPointer f)
+{
+    return (XExtDisplayInfo*)0;
+}
+            ],[
+            have_const_param_XextAddDisplay=yes
+            AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY)
+            ])
+            AC_MSG_RESULT($have_const_param_XextAddDisplay)
+
             AC_CHECK_LIB(X11, XGetEventData, AC_DEFINE(SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS, 1, [Have XGenericEvent]))
 
             AC_ARG_ENABLE(video-x11-xcursor,
--- a/include/SDL_config.h.in	Wed May 30 11:43:33 2012 -0400
+++ b/include/SDL_config.h.in	Wed May 30 11:44:57 2012 -0400
@@ -269,6 +269,7 @@
 #undef SDL_VIDEO_DRIVER_X11_XSHAPE
 #undef SDL_VIDEO_DRIVER_X11_XVIDMODE
 #undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS
+#undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY
 
 #undef SDL_VIDEO_RENDER_D3D
 #undef SDL_VIDEO_RENDER_OGL
--- a/src/video/x11/SDL_x11sym.h	Wed May 30 11:43:33 2012 -0400
+++ b/src/video/x11/SDL_x11sym.h	Wed May 30 11:44:57 2012 -0400
@@ -103,7 +103,11 @@
 SDL_X11_SYM(int,XUnmapWindow,(Display* a,Window b),(a,b),return)
 SDL_X11_SYM(int,XWarpPointer,(Display* a,Window b,Window c,int d,int e,unsigned int f,unsigned int g,int h,int i),(a,b,c,d,e,f,g,h,i),return)
 SDL_X11_SYM(VisualID,XVisualIDFromVisual,(Visual* a),(a),return)
+#if SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY
 SDL_X11_SYM(XExtDisplayInfo*,XextAddDisplay,(XExtensionInfo* a,Display* b,_Xconst char* c,XExtensionHooks* d,int e,XPointer f),(a,b,c,d,e,f),return)
+#else
+SDL_X11_SYM(XExtDisplayInfo*,XextAddDisplay,(XExtensionInfo* a,Display* b,char* c,XExtensionHooks* d,int e,XPointer f),(a,b,c,d,e,f),return)
+#endif
 SDL_X11_SYM(XExtensionInfo*,XextCreateExtension,(void),(),return)
 SDL_X11_SYM(void,XextDestroyExtension,(XExtensionInfo* a),(a),)
 SDL_X11_SYM(XExtDisplayInfo*,XextFindDisplay,(XExtensionInfo* a,Display* b),(a,b),return)