[PATCH 1/5] configure: Check for SDL_JoystickRumble presence.

Rémi Bernon rbernon at codeweavers.com
Fri Sep 24 01:42:12 CDT 2021


It's been introduced in SDL2 2.0.9, released on 2018/11/31.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 configure.ac               |  4 +++-
 dlls/winebus.sys/bus_sdl.c | 10 ++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 15b7c2add2a..4d87d516bd1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1701,7 +1701,9 @@ if test "x$with_sdl" != "xno"
 then
     WINE_PACKAGE_FLAGS(SDL2,[sdl2],[-lSDL2],,,
         [AC_CHECK_HEADERS([SDL.h],
-            [WINE_CHECK_SONAME(SDL2,SDL_Init,,,[$SDL2_LIBS],[[libSDL2-2.0*]])])])
+            [WINE_CHECK_SONAME(SDL2,SDL_Init,,,[$SDL2_LIBS],[[libSDL2-2.0*]])])
+             WINE_CHECK_LIB_FUNCS([SDL_JoystickRumble], [$SDL2_LIBS])
+            ])
 fi
 WINE_NOTICE_WITH(sdl,[test "x$ac_cv_lib_soname_SDL2" = "x"],
                  [libSDL2 ${notice_platform}development files not found, SDL2 won't be supported.])
diff --git a/dlls/winebus.sys/bus_sdl.c b/dlls/winebus.sys/bus_sdl.c
index 31915a9fa0d..6e7c359deea 100644
--- a/dlls/winebus.sys/bus_sdl.c
+++ b/dlls/winebus.sys/bus_sdl.c
@@ -102,7 +102,9 @@ MAKE_FUNCPTR(SDL_HapticRumbleSupported);
 MAKE_FUNCPTR(SDL_HapticRunEffect);
 MAKE_FUNCPTR(SDL_HapticStopAll);
 MAKE_FUNCPTR(SDL_JoystickIsHaptic);
+#ifdef HAVE_SDL_JOYSTICKRUMBLE
 MAKE_FUNCPTR(SDL_JoystickRumble);
+#endif
 MAKE_FUNCPTR(SDL_memset);
 MAKE_FUNCPTR(SDL_GameControllerAddMapping);
 MAKE_FUNCPTR(SDL_RegisterEvents);
@@ -181,8 +183,10 @@ static BOOL descriptor_add_haptic(struct sdl_device *impl)
         pSDL_HapticRumbleInit(impl->sdl_haptic);
     }
 
+#ifdef HAVE_SDL_JOYSTICKRUMBLE
     if (!pSDL_JoystickRumble(impl->sdl_joystick, 0, 0, 0))
         impl->effect_support |= WINE_SDL_JOYSTICK_RUMBLE;
+#endif
 
     if (impl->effect_support & EFFECT_SUPPORT_HAPTICS)
     {
@@ -365,8 +369,10 @@ NTSTATUS sdl_device_haptics_start(struct unix_device *iface, DWORD duration_ms,
     effect.leftright.small_magnitude = buzz_intensity;
 
     if (impl->sdl_haptic) pSDL_HapticStopAll(impl->sdl_haptic);
+#ifdef HAVE_SDL_JOYSTICKRUMBLE
     if (impl->effect_support & WINE_SDL_JOYSTICK_RUMBLE)
         pSDL_JoystickRumble(impl->sdl_joystick, 0, 0, 0);
+#endif
     if (!effect.leftright.large_magnitude && !effect.leftright.small_magnitude)
         return STATUS_SUCCESS;
 
@@ -383,11 +389,13 @@ NTSTATUS sdl_device_haptics_start(struct unix_device *iface, DWORD duration_ms,
         float magnitude = (effect.leftright.large_magnitude + effect.leftright.small_magnitude) / 2.0 / 32767.0;
         pSDL_HapticRumblePlay(impl->sdl_haptic, magnitude, effect.leftright.length);
     }
+#ifdef HAVE_SDL_JOYSTICKRUMBLE
     else if (impl->effect_support & WINE_SDL_JOYSTICK_RUMBLE)
     {
         pSDL_JoystickRumble(impl->sdl_joystick, effect.leftright.large_magnitude,
                             effect.leftright.small_magnitude, -1);
     }
+#endif
 
     return STATUS_SUCCESS;
 }
@@ -658,7 +666,9 @@ NTSTATUS sdl_bus_init(void *args)
     LOAD_FUNCPTR(SDL_HapticRunEffect);
     LOAD_FUNCPTR(SDL_HapticStopAll);
     LOAD_FUNCPTR(SDL_JoystickIsHaptic);
+#ifdef HAVE_SDL_JOYSTICKRUMBLE
     LOAD_FUNCPTR(SDL_JoystickRumble);
+#endif
     LOAD_FUNCPTR(SDL_memset);
     LOAD_FUNCPTR(SDL_GameControllerAddMapping);
     LOAD_FUNCPTR(SDL_RegisterEvents);
-- 
2.33.0




More information about the wine-devel mailing list