[PATCH 1/2] winebus.sys: Only use SDL_JoystickRumble as a fallback.
Rémi Bernon
rbernon at codeweavers.com
Mon Oct 18 09:34:12 CDT 2021
If nothing else is supported, and pass the duration_ms parameter too.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/winebus.sys/bus_sdl.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/winebus.sys/bus_sdl.c b/dlls/winebus.sys/bus_sdl.c
index 119c1b0116d..056f8fe285b 100644
--- a/dlls/winebus.sys/bus_sdl.c
+++ b/dlls/winebus.sys/bus_sdl.c
@@ -195,7 +195,8 @@ static BOOL descriptor_add_haptic(struct sdl_device *impl)
pSDL_HapticRumbleInit(impl->sdl_haptic);
}
- if (pSDL_JoystickRumble && !pSDL_JoystickRumble(impl->sdl_joystick, 0, 0, 0))
+ if (!(impl->effect_support & EFFECT_SUPPORT_HAPTICS) && pSDL_JoystickRumble &&
+ !pSDL_JoystickRumble(impl->sdl_joystick, 0, 0, 0))
impl->effect_support |= WINE_SDL_JOYSTICK_RUMBLE;
if (impl->effect_support & EFFECT_SUPPORT_HAPTICS)
@@ -397,9 +398,10 @@ NTSTATUS sdl_device_haptics_start(struct unix_device *iface, DWORD duration_ms,
effect.leftright.large_magnitude = rumble_intensity;
effect.leftright.small_magnitude = buzz_intensity;
- if (impl->sdl_haptic) pSDL_HapticStopAll(impl->sdl_haptic);
if (impl->effect_support & WINE_SDL_JOYSTICK_RUMBLE)
pSDL_JoystickRumble(impl->sdl_joystick, 0, 0, 0);
+ else if (impl->sdl_haptic)
+ pSDL_HapticStopAll(impl->sdl_haptic);
if (!effect.leftright.large_magnitude && !effect.leftright.small_magnitude)
return STATUS_SUCCESS;
@@ -419,7 +421,7 @@ NTSTATUS sdl_device_haptics_start(struct unix_device *iface, DWORD duration_ms,
else if (impl->effect_support & WINE_SDL_JOYSTICK_RUMBLE)
{
pSDL_JoystickRumble(impl->sdl_joystick, effect.leftright.large_magnitude,
- effect.leftright.small_magnitude, -1);
+ effect.leftright.small_magnitude, duration_ms);
}
return STATUS_SUCCESS;
--
2.33.0
More information about the wine-devel
mailing list