dinput: Return DI_OK when HID joystick CreateEffect succeeds.
SetParameters returns DI_DOWNLOADSKIPPED if the device is not acquired exclusively. This fixes Assetto Corsa Competizione and Assetto Corsa not having FFB due to calling CreateEffect before acquiring the device, which skips the effect download and returns DI_DOWNLOADSKIPPED. In particular, ACC tries twice to create the effect, and each time they unacquire the device to turn off the autocenter, and then create the effect while still in unacquired state, which in turn returns DI_DOWNLOADSKIPPED, etc. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51922 Signed-off-by: Rémi Bernon <rbernon@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
ee8015b97a
commit
34b0b4accb
|
@ -1375,7 +1375,7 @@ static HRESULT WINAPI dinput_device_CreateEffect( IDirectInputDevice8W *iface, c
|
||||||
if (!impl->acquired || !(impl->dwCoopLevel & DISCL_EXCLUSIVE)) flags |= DIEP_NODOWNLOAD;
|
if (!impl->acquired || !(impl->dwCoopLevel & DISCL_EXCLUSIVE)) flags |= DIEP_NODOWNLOAD;
|
||||||
hr = IDirectInputEffect_SetParameters( *out, params, flags );
|
hr = IDirectInputEffect_SetParameters( *out, params, flags );
|
||||||
if (FAILED(hr)) goto failed;
|
if (FAILED(hr)) goto failed;
|
||||||
return hr;
|
return DI_OK;
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
IDirectInputEffect_Release( *out );
|
IDirectInputEffect_Release( *out );
|
||||||
|
|
|
@ -6153,7 +6153,6 @@ static void test_periodic_effect( IDirectInputDevice8W *device, HANDLE file, DWO
|
||||||
ok( hr == DI_OK, "Acquire returned: %#x\n", hr );
|
ok( hr == DI_OK, "Acquire returned: %#x\n", hr );
|
||||||
set_hid_expect( file, NULL, 0 );
|
set_hid_expect( file, NULL, 0 );
|
||||||
hr = IDirectInputDevice8_CreateEffect( device, &GUID_Sine, &expect_desc, &effect, NULL );
|
hr = IDirectInputDevice8_CreateEffect( device, &GUID_Sine, &expect_desc, &effect, NULL );
|
||||||
todo_wine
|
|
||||||
ok( hr == DI_OK, "CreateEffect returned %#x\n", hr );
|
ok( hr == DI_OK, "CreateEffect returned %#x\n", hr );
|
||||||
ref = IDirectInputEffect_Release( effect );
|
ref = IDirectInputEffect_Release( effect );
|
||||||
ok( ref == 0, "Release returned %d\n", ref );
|
ok( ref == 0, "Release returned %d\n", ref );
|
||||||
|
|
Loading…
Reference in New Issue