Instead of stopping them, then re-starting them when a new effect is requested.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/winebus.sys/bus_sdl.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/dlls/winebus.sys/bus_sdl.c b/dlls/winebus.sys/bus_sdl.c index ce696f5b42f..0bddba2fe18 100644 --- a/dlls/winebus.sys/bus_sdl.c +++ b/dlls/winebus.sys/bus_sdl.c @@ -415,12 +415,15 @@ NTSTATUS sdl_device_haptics_start(struct unix_device *iface, UINT duration_ms, effect.leftright.large_magnitude = rumble_intensity; effect.leftright.small_magnitude = buzz_intensity;
- 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) + { + 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); + return STATUS_SUCCESS; + }
if (impl->effect_support & SDL_HAPTIC_LEFTRIGHT) {