mirror of https://github.com/encounter/SDL.git
Fixed bug 3609 - Windows build fails due to conflicting types for 'XINPUT_GAMEPAD_EX'
Ozkan Sezer (In reply to Ryan C. Gordon from comment #9) > I've put this patch in as https://hg.libsdl.org/SDL/rev/7213ae46e870 ...can > you verify this works on the latest MinGW? > > Thanks, > --ryan. This patch is wrong: the structure in question has nothing to do with any gcc version in use. I suggest reverting this adding a conigury check for it, instead. Something like the following should do it: (configure needs regenerating.)
This commit is contained in:
parent
cd79d8ccec
commit
3c09265daf
|
@ -1095,6 +1095,16 @@ elseif(WINDOWS)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <xinput.h>
|
#include <xinput.h>
|
||||||
int main(int argc, char **argv) { }" HAVE_XINPUT_H)
|
int main(int argc, char **argv) { }" HAVE_XINPUT_H)
|
||||||
|
check_c_source_compiles("
|
||||||
|
#include <windows.h>
|
||||||
|
#include <xinput.h>
|
||||||
|
XINPUT_GAMEPAD_EX x1;
|
||||||
|
int main(int argc, char **argv) { }" HAVE_XINPUT_GAMEPAD_EX)
|
||||||
|
check_c_source_compiles("
|
||||||
|
#include <windows.h>
|
||||||
|
#include <xinput.h>
|
||||||
|
XINPUT_STATE_EX s1;
|
||||||
|
int main(int argc, char **argv) { }" HAVE_XINPUT_STATE_EX)
|
||||||
else()
|
else()
|
||||||
check_include_file(xinput.h HAVE_XINPUT_H)
|
check_include_file(xinput.h HAVE_XINPUT_H)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -22687,6 +22687,44 @@ if test "x$ac_cv_header_xinput_h" = xyes; then :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <xinput.h>
|
||||||
|
XINPUT_GAMEPAD_EX x1;
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_compile "$LINENO"; then :
|
||||||
|
have_xinput_gamepadex=yes
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <xinput.h>
|
||||||
|
XINPUT_STATE_EX s1;
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_compile "$LINENO"; then :
|
||||||
|
have_xinput_stateex=yes
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
|
||||||
if test x$have_ddraw = xyes; then
|
if test x$have_ddraw = xyes; then
|
||||||
|
|
||||||
|
@ -22712,6 +22750,16 @@ $as_echo "#define HAVE_DXGI_H 1" >>confdefs.h
|
||||||
|
|
||||||
$as_echo "#define HAVE_XINPUT_H 1" >>confdefs.h
|
$as_echo "#define HAVE_XINPUT_H 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test x$have_xinput_gamepadex = xyes; then
|
||||||
|
|
||||||
|
$as_echo "#define HAVE_XINPUT_GAMEPAD_EX 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test x$have_xinput_stateex = xyes; then
|
||||||
|
|
||||||
|
$as_echo "#define HAVE_XINPUT_STATE_EX 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SUMMARY_video="${SUMMARY_video} directx"
|
SUMMARY_video="${SUMMARY_video} directx"
|
||||||
|
|
16
configure.in
16
configure.in
|
@ -2801,6 +2801,16 @@ AC_HELP_STRING([--enable-directx], [use DirectX for Windows audio/video [[defaul
|
||||||
AC_CHECK_HEADER(dxgi.h, have_dxgi=yes)
|
AC_CHECK_HEADER(dxgi.h, have_dxgi=yes)
|
||||||
AC_CHECK_HEADER(xaudio2.h, have_xaudio2=yes)
|
AC_CHECK_HEADER(xaudio2.h, have_xaudio2=yes)
|
||||||
AC_CHECK_HEADER(xinput.h, have_xinput=yes)
|
AC_CHECK_HEADER(xinput.h, have_xinput=yes)
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <windows.h>
|
||||||
|
#include <xinput.h>
|
||||||
|
XINPUT_GAMEPAD_EX x1;
|
||||||
|
],[],[have_xinput_gamepadex=yes])
|
||||||
|
AC_TRY_COMPILE([
|
||||||
|
#include <windows.h>
|
||||||
|
#include <xinput.h>
|
||||||
|
XINPUT_STATE_EX s1;
|
||||||
|
],[],[have_xinput_stateex=yes])
|
||||||
|
|
||||||
if test x$have_ddraw = xyes; then
|
if test x$have_ddraw = xyes; then
|
||||||
AC_DEFINE(HAVE_DDRAW_H, 1, [ ])
|
AC_DEFINE(HAVE_DDRAW_H, 1, [ ])
|
||||||
|
@ -2817,6 +2827,12 @@ AC_HELP_STRING([--enable-directx], [use DirectX for Windows audio/video [[defaul
|
||||||
if test x$have_xinput = xyes; then
|
if test x$have_xinput = xyes; then
|
||||||
AC_DEFINE(HAVE_XINPUT_H, 1, [ ])
|
AC_DEFINE(HAVE_XINPUT_H, 1, [ ])
|
||||||
fi
|
fi
|
||||||
|
if test x$have_xinput_gamepadex = xyes; then
|
||||||
|
AC_DEFINE(HAVE_XINPUT_GAMEPAD_EX, 1, [ ])
|
||||||
|
fi
|
||||||
|
if test x$have_xinput_stateex = xyes; then
|
||||||
|
AC_DEFINE(HAVE_XINPUT_STATE_EX, 1, [ ])
|
||||||
|
fi
|
||||||
|
|
||||||
SUMMARY_video="${SUMMARY_video} directx"
|
SUMMARY_video="${SUMMARY_video} directx"
|
||||||
SUMMARY_audio="${SUMMARY_audio} directx"
|
SUMMARY_audio="${SUMMARY_audio} directx"
|
||||||
|
|
|
@ -55,6 +55,8 @@
|
||||||
#cmakedefine HAVE_XAUDIO2_H @HAVE_XAUDIO2_H@
|
#cmakedefine HAVE_XAUDIO2_H @HAVE_XAUDIO2_H@
|
||||||
#cmakedefine HAVE_XINPUT_H @HAVE_XINPUT_H@
|
#cmakedefine HAVE_XINPUT_H @HAVE_XINPUT_H@
|
||||||
#cmakedefine HAVE_DXGI_H @HAVE_DXGI_H@
|
#cmakedefine HAVE_DXGI_H @HAVE_DXGI_H@
|
||||||
|
#cmakedefine HAVE_XINPUT_GAMEPAD_EX @HAVE_XINPUT_GAMEPAD_EX@
|
||||||
|
#cmakedefine HAVE_XINPUT_STATE_EX @HAVE_XINPUT_STATE_EX@
|
||||||
|
|
||||||
/* Comment this if you want to build without any C library requirements */
|
/* Comment this if you want to build without any C library requirements */
|
||||||
#cmakedefine HAVE_LIBC 1
|
#cmakedefine HAVE_LIBC 1
|
||||||
|
|
|
@ -55,6 +55,8 @@
|
||||||
#undef HAVE_DSOUND_H
|
#undef HAVE_DSOUND_H
|
||||||
#undef HAVE_DXGI_H
|
#undef HAVE_DXGI_H
|
||||||
#undef HAVE_XINPUT_H
|
#undef HAVE_XINPUT_H
|
||||||
|
#undef HAVE_XINPUT_GAMEPAD_EX
|
||||||
|
#undef HAVE_XINPUT_STATE_EX
|
||||||
|
|
||||||
/* Comment this if you want to build without any C library requirements */
|
/* Comment this if you want to build without any C library requirements */
|
||||||
#undef HAVE_LIBC
|
#undef HAVE_LIBC
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <basetyps.h> /* for REFIID with broken mingw.org headers */
|
||||||
|
|
||||||
/* Routines to convert from UTF8 to native Windows text */
|
/* Routines to convert from UTF8 to native Windows text */
|
||||||
#if UNICODE
|
#if UNICODE
|
||||||
|
|
|
@ -101,13 +101,7 @@
|
||||||
|
|
||||||
/* typedef's for XInput structs we use */
|
/* typedef's for XInput structs we use */
|
||||||
|
|
||||||
/* Don't redeclare these on MinGW with gcc >= 5.0.2 */
|
#ifndef HAVE_XINPUT_GAMEPAD_EX
|
||||||
#if defined(__MINGW32__) && (((__GNUC__ * 10000) + (__GNUC_MINOR__ * 100) + __GNUC_PATCHLEVEL__) >= 50002)
|
|
||||||
#define HAS_XINPUT_GAMEPAD_EX
|
|
||||||
#define HAS_XINPUT_STATE_EX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef HAS_XINPUT_GAMEPAD_EX
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
WORD wButtons;
|
WORD wButtons;
|
||||||
|
@ -121,7 +115,7 @@ typedef struct
|
||||||
} XINPUT_GAMEPAD_EX;
|
} XINPUT_GAMEPAD_EX;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAS_XINPUT_STATE_EX
|
#ifndef HAVE_XINPUT_STATE_EX
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
DWORD dwPacketNumber;
|
DWORD dwPacketNumber;
|
||||||
|
|
Loading…
Reference in New Issue