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 <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()
|
||||
check_include_file(xinput.h HAVE_XINPUT_H)
|
||||
endif()
|
||||
|
|
|
@ -22687,6 +22687,44 @@ if test "x$ac_cv_header_xinput_h" = xyes; then :
|
|||
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
|
||||
|
||||
|
@ -22712,6 +22750,16 @@ $as_echo "#define HAVE_DXGI_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
|
||||
|
||||
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(xaudio2.h, have_xaudio2=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
|
||||
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
|
||||
AC_DEFINE(HAVE_XINPUT_H, 1, [ ])
|
||||
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_audio="${SUMMARY_audio} directx"
|
||||
|
|
|
@ -55,6 +55,8 @@
|
|||
#cmakedefine HAVE_XAUDIO2_H @HAVE_XAUDIO2_H@
|
||||
#cmakedefine HAVE_XINPUT_H @HAVE_XINPUT_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 */
|
||||
#cmakedefine HAVE_LIBC 1
|
||||
|
|
|
@ -55,6 +55,8 @@
|
|||
#undef HAVE_DSOUND_H
|
||||
#undef HAVE_DXGI_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 */
|
||||
#undef HAVE_LIBC
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#endif
|
||||
|
||||
#include <windows.h>
|
||||
#include <basetyps.h> /* for REFIID with broken mingw.org headers */
|
||||
|
||||
/* Routines to convert from UTF8 to native Windows text */
|
||||
#if UNICODE
|
||||
|
|
|
@ -101,13 +101,7 @@
|
|||
|
||||
/* typedef's for XInput structs we use */
|
||||
|
||||
/* Don't redeclare these on MinGW with gcc >= 5.0.2 */
|
||||
#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
|
||||
#ifndef HAVE_XINPUT_GAMEPAD_EX
|
||||
typedef struct
|
||||
{
|
||||
WORD wButtons;
|
||||
|
@ -121,7 +115,7 @@ typedef struct
|
|||
} XINPUT_GAMEPAD_EX;
|
||||
#endif
|
||||
|
||||
#ifndef HAS_XINPUT_STATE_EX
|
||||
#ifndef HAVE_XINPUT_STATE_EX
|
||||
typedef struct
|
||||
{
|
||||
DWORD dwPacketNumber;
|
||||
|
|
Loading…
Reference in New Issue