diff --git a/dlls/dinput/joystick_hid.c b/dlls/dinput/joystick_hid.c index 62856cefa44..99436bd8b05 100644 --- a/dlls/dinput/joystick_hid.c +++ b/dlls/dinput/joystick_hid.c @@ -2554,7 +2554,7 @@ static HRESULT WINAPI hid_joystick_effect_SetParameters( IDirectInputEffect *ifa if (flags & DIEP_DURATION) { - if (impl->params.dwDuration != params->dwDuration) impl->modified |= DIEP_DURATION; + impl->modified |= DIEP_DURATION; impl->params.dwDuration = params->dwDuration; } if (flags & DIEP_GAIN) diff --git a/dlls/dinput8/tests/hid.c b/dlls/dinput8/tests/hid.c index 4159c3edd90..0c63ed835e8 100644 --- a/dlls/dinput8/tests/hid.c +++ b/dlls/dinput8/tests/hid.c @@ -6471,6 +6471,15 @@ static void test_periodic_effect( IDirectInputDevice8W *device, HANDLE file, DWO hr = IDirectInputEffect_SetParameters( effect, &expect_desc, 0 ); ok( hr == DI_OK, "SetParameters returned %#x\n", hr ); wait_hid_expect( file, 100 ); /* these updates are sent asynchronously */ + desc = expect_desc; + desc.dwDuration = INFINITE; + desc.dwTriggerButton = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE( 0 ) | DIDFT_FFEFFECTTRIGGER, + hr = IDirectInputEffect_SetParameters( effect, &desc, DIEP_NODOWNLOAD|DIEP_DURATION|DIEP_TRIGGERBUTTON ); + ok( hr == DI_DOWNLOADSKIPPED, "SetParameters returned %#x\n", hr ); + set_hid_expect( file, expect_update, sizeof(expect_update) ); + hr = IDirectInputEffect_SetParameters( effect, &expect_desc, 0 ); + ok( hr == DI_OK, "SetParameters returned %#x\n", hr ); + wait_hid_expect( file, 100 ); /* these updates are sent asynchronously */ desc = expect_desc; desc.lpEnvelope = &envelope;