From 27f456844b8195dac09bfce0c4cc906236462a60 Mon Sep 17 00:00:00 2001 From: Bruno Jesus <00cpxxx@gmail.com> Date: Thu, 26 Jan 2017 17:07:03 -0200 Subject: [PATCH] dinput: DISFFC_RESET will not release the effects. Signed-off-by: Bruno Jesus <00cpxxx@gmail.com> Signed-off-by: Alexandre Julliard --- dlls/dinput/joystick_linuxinput.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c index 790802ddc2f..f62893bf05e 100644 --- a/dlls/dinput/joystick_linuxinput.c +++ b/dlls/dinput/joystick_linuxinput.c @@ -1331,9 +1331,9 @@ static HRESULT WINAPI JoystickWImpl_SendForceFeedbackCommand(LPDIRECTINPUTDEVICE { case DISFFC_STOPALL: { - /* Stop all effects */ effect_list_item *itr; + /* Stop all effects */ LIST_FOR_EACH_ENTRY(itr, &This->ff_effects, effect_list_item, entry) IDirectInputEffect_Stop(itr->ref); break; @@ -1341,12 +1341,14 @@ static HRESULT WINAPI JoystickWImpl_SendForceFeedbackCommand(LPDIRECTINPUTDEVICE case DISFFC_RESET: { - effect_list_item *itr, *ptr; + effect_list_item *itr; - /* Stop, unload, release and free all effects */ - /* This returns the device to its "bare" state */ - LIST_FOR_EACH_ENTRY_SAFE(itr, ptr, &This->ff_effects, effect_list_item, entry) - IDirectInputEffect_Release(itr->ref); + /* Stop and unload all effects. It is not true that effects are released */ + LIST_FOR_EACH_ENTRY(itr, &This->ff_effects, effect_list_item, entry) + { + IDirectInputEffect_Stop(itr->ref); + IDirectInputEffect_Unload(itr->ref); + } break; } case DISFFC_PAUSE: