diff --git a/CMakeLists.txt b/CMakeLists.txt index 96116b026..c7f02b72b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -868,6 +868,15 @@ if(WIN32) # Xinput support for xbox compatible controllers. if(XINPUT_FOUND) + run_c_compile_test(" + #include + XINPUT_CAPABILITIES_EX x; + int main(void) { return 0; }" + HAVE_XINPUT_CAPABILITIES_EX + ) + if(HAVE_XINPUT_CAPABILITIES_EX) + set(ALLEGRO_CFG_HAVE_XINPUT_CAPABILITIES_EX 1) + endif() set(SUPPORT_XINPUT 1) set(ALLEGRO_CFG_XINPUT 1) endif(XINPUT_FOUND) diff --git a/include/allegro5/platform/alplatf.h.cmake b/include/allegro5/platform/alplatf.h.cmake index 38d40350a..62cca3874 100644 --- a/include/allegro5/platform/alplatf.h.cmake +++ b/include/allegro5/platform/alplatf.h.cmake @@ -28,6 +28,8 @@ #cmakedefine ALLEGRO_CFG_ANDROID_LEGACY +#cmakedefine ALLEGRO_CFG_HAVE_XINPUT_CAPABILITIES_EX + /*---------------------------------------------------------------------------*/ /* Define to 1 if you have the corresponding header file. */ diff --git a/src/win/wjoyxi.c b/src/win/wjoyxi.c index 712c5f25d..15333843d 100644 --- a/src/win/wjoyxi.c +++ b/src/win/wjoyxi.c @@ -109,6 +109,7 @@ ALLEGRO_JOYSTICK_DRIVER _al_joydrv_xinput = #define XINPUT_MIN_VERSION 3 #define XINPUT_MAX_VERSION 4 +#ifndef ALLEGRO_CFG_HAVE_XINPUT_CAPABILITIES_EX typedef struct _XINPUT_CAPABILITIES_EX { XINPUT_CAPABILITIES Capabilities; @@ -118,6 +119,7 @@ typedef struct _XINPUT_CAPABILITIES_EX WORD unk1; DWORD unk2; } XINPUT_CAPABILITIES_EX, * PXINPUT_CAPABILITIES_EX; +#endif typedef void (WINAPI *XInputEnablePROC)(BOOL); typedef DWORD (WINAPI *XInputSetStatePROC)(DWORD, XINPUT_VIBRATION*);