Module: wine Branch: master Commit: d0070935e4f0986127ee6d637b5c412a917ff591 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d0070935e4f0986127ee6d637b...
Author: Bruno Jesus 00cpxxx@gmail.com Date: Wed Aug 24 22:55:57 2016 -0300
dinput: Fix infinite effect length handling.
Based on ideas by Elias Vanderstuyft.
Signed-off-by: Bruno Jesus 00cpxxx@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dinput/effect_linuxinput.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/dlls/dinput/effect_linuxinput.c b/dlls/dinput/effect_linuxinput.c index 0d2fdf5..1b60d47 100644 --- a/dlls/dinput/effect_linuxinput.c +++ b/dlls/dinput/effect_linuxinput.c @@ -302,8 +302,12 @@ static HRESULT WINAPI LinuxInputEffectImpl_GetParameters( } }
- if (dwFlags & DIEP_DURATION) { - peff->dwDuration = (DWORD)This->effect.replay.length * 1000; + if (dwFlags & DIEP_DURATION) + { + if (!This->effect.replay.length) /* infinite for the linux driver */ + peff->dwDuration = INFINITE; + else + peff->dwDuration = (DWORD)This->effect.replay.length * 1000; }
if (dwFlags & DIEP_ENVELOPE) { @@ -535,7 +539,14 @@ static HRESULT WINAPI LinuxInputEffectImpl_SetParameters( }
if (dwFlags & DIEP_DURATION) - This->effect.replay.length = peff->dwDuration / 1000; + { + if (peff->dwDuration == INFINITE) + This->effect.replay.length = 0; /* infinite for the linux driver */ + else if(peff->dwDuration > 1000) + This->effect.replay.length = peff->dwDuration / 1000; + else + This->effect.replay.length = 1; + }
if (dwFlags & DIEP_ENVELOPE) { struct ff_envelope* env;