From 24059a19c5302fa2ed40cbdb3e4dcaae9e732690 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 9 Jul 2021 18:11:42 -0700 Subject: [PATCH] The RAWINPUT driver is no longer tied to HIDAPI in any way --- configure | 12 +++------- configure.ac | 8 +------ include/SDL_hints.h | 26 ++++++++++----------- src/joystick/windows/SDL_rawinputjoystick.c | 2 +- 4 files changed, 18 insertions(+), 30 deletions(-) diff --git a/configure b/configure index 1f71632c5..be3273389 100755 --- a/configure +++ b/configure @@ -24547,10 +24547,6 @@ fi enable_hidapi_libusb=yes require_hidapi_libusb=yes ;; - # RAWINPUT is only available on Win32, but can be enabled if HIDAPI is - *-*-cygwin* | *-*-mingw*) - enable_joystick_rawinput=yes - ;; esac hidapi_support=yes @@ -24646,11 +24642,6 @@ fi $as_echo "#define SDL_JOYSTICK_HIDAPI 1" >>confdefs.h - if test x$enable_joystick_rawinput = xyes; then - -$as_echo "#define SDL_JOYSTICK_RAWINPUT 1" >>confdefs.h - - fi EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi" SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c" SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c" @@ -25230,6 +25221,9 @@ $as_echo "#define SDL_AUDIO_DRIVER_WASAPI 1" >>confdefs.h fi # Set up files for the joystick library if test x$enable_joystick = xyes; then + +$as_echo "#define SDL_JOYSTICK_RAWINPUT 1" >>confdefs.h + if test x$have_dinput = xyes -o x$have_xinput = xyes; then if test x$have_xinput = xyes; then diff --git a/configure.ac b/configure.ac index f54202ad0..b93711538 100644 --- a/configure.ac +++ b/configure.ac @@ -3349,10 +3349,6 @@ CheckHIDAPI() enable_hidapi_libusb=yes require_hidapi_libusb=yes ;; - # RAWINPUT is only available on Win32, but can be enabled if HIDAPI is - *-*-cygwin* | *-*-mingw*) - enable_joystick_rawinput=yes - ;; esac hidapi_support=yes @@ -3369,9 +3365,6 @@ CheckHIDAPI() if test x$hidapi_support = xyes; then AC_DEFINE(SDL_JOYSTICK_HIDAPI, 1, [ ]) - if test x$enable_joystick_rawinput = xyes; then - AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ]) - fi EXTRA_CFLAGS="$EXTRA_CFLAGS -I$srcdir/src/hidapi/hidapi" SOURCES="$SOURCES $srcdir/src/joystick/hidapi/*.c" SOURCES="$SOURCES $srcdir/src/hidapi/SDL_hidapi.c" @@ -3797,6 +3790,7 @@ case "$host" in fi # Set up files for the joystick library if test x$enable_joystick = xyes; then + AC_DEFINE(SDL_JOYSTICK_RAWINPUT, 1, [ ]) if test x$have_dinput = xyes -o x$have_xinput = xyes; then if test x$have_xinput = xyes; then AC_DEFINE(SDL_JOYSTICK_XINPUT, 1, [ ]) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index d2d902b8f..08729ef9b 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -727,19 +727,6 @@ extern "C" { */ #define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" - /** - * \brief A variable controlling whether the HIDAPI driver for XBox controllers on Windows should pull correlated - * data from XInput. - * - * This variable can be set to the following values: - * "0" - HIDAPI Xbox driver will only use HIDAPI data - * "1" - HIDAPI Xbox driver will also pull data from XInput, providing better trigger axes, guide button - * presses, and rumble support - * - * The default is "1". This hint applies to any joysticks opened after setting the hint. - */ -#define SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT "SDL_JOYSTICK_HIDAPI_CORRELATE_XINPUT" - /** * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. * @@ -783,6 +770,19 @@ extern "C" { */ #define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + /** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + /** * \brief A variable controlling whether a separate thread should be used * for handling joystick detection and raw input messages on Windows diff --git a/src/joystick/windows/SDL_rawinputjoystick.c b/src/joystick/windows/SDL_rawinputjoystick.c index f323b379f..1bcf1564d 100644 --- a/src/joystick/windows/SDL_rawinputjoystick.c +++ b/src/joystick/windows/SDL_rawinputjoystick.c @@ -1042,7 +1042,7 @@ RAWINPUT_JoystickOpen(SDL_Joystick *joystick, int device_index) /* We'll try to get guide button and trigger axes from XInput */ #ifdef SDL_JOYSTICK_RAWINPUT_XINPUT xinput_device_change = SDL_TRUE; - ctx->xinput_enabled = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT, SDL_TRUE); + ctx->xinput_enabled = SDL_GetHintBoolean(SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT, SDL_TRUE); if (ctx->xinput_enabled && (WIN_LoadXInputDLL() < 0 || !XINPUTGETSTATE)) { ctx->xinput_enabled = SDL_FALSE; }