Rémi Bernon : dinput: Stub hid_joystick force feedback methods.

Alexandre Julliard julliard at winehq.org
Fri Oct 1 18:02:22 CDT 2021


Module: wine
Branch: master
Commit: b33bece87e39b7a1762090f8ef7a4f789d56a104
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b33bece87e39b7a1762090f8ef7a4f789d56a104

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Fri Oct  1 09:30:59 2021 +0200

dinput: Stub hid_joystick force feedback methods.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dinput/joystick_hid.c | 83 ++++++++++++++++++++++++++++++++++++++++++----
 dlls/dinput8/tests/hid.c   | 11 +-----
 2 files changed, 78 insertions(+), 16 deletions(-)

diff --git a/dlls/dinput/joystick_hid.c b/dlls/dinput/joystick_hid.c
index 834a5de0860..a6c6de3a889 100644
--- a/dlls/dinput/joystick_hid.c
+++ b/dlls/dinput/joystick_hid.c
@@ -780,6 +780,77 @@ static HRESULT WINAPI hid_joystick_GetDeviceInfo( IDirectInputDevice8W *iface, D
     return S_OK;
 }
 
+static HRESULT WINAPI hid_joystick_CreateEffect( IDirectInputDevice8W *iface, const GUID *guid,
+                                                 const DIEFFECT *params, IDirectInputEffect **out,
+                                                 IUnknown *outer )
+{
+    FIXME( "iface %p, guid %s, params %p, out %p, outer %p stub!\n", iface, debugstr_guid( guid ),
+           params, out, outer );
+
+    if (!out) return E_POINTER;
+
+    return DIERR_UNSUPPORTED;
+}
+
+static HRESULT WINAPI hid_joystick_EnumEffects( IDirectInputDevice8W *iface, LPDIENUMEFFECTSCALLBACKW callback,
+                                                void *context, DWORD type )
+{
+    FIXME( "iface %p, callback %p, context %p, type %#x stub!\n", iface, callback, context, type );
+
+    if (!callback) return DIERR_INVALIDPARAM;
+
+    return DI_OK;
+}
+
+static HRESULT WINAPI hid_joystick_GetEffectInfo( IDirectInputDevice8W *iface, DIEFFECTINFOW *info,
+                                                  const GUID *guid )
+{
+    FIXME( "iface %p, info %p, guid %s stub!\n", iface, info, debugstr_guid( guid ) );
+
+    if (!info) return E_POINTER;
+    if (info->dwSize != sizeof(DIEFFECTINFOW)) return DIERR_INVALIDPARAM;
+
+    return DIERR_DEVICENOTREG;
+}
+
+static HRESULT WINAPI hid_joystick_GetForceFeedbackState( IDirectInputDevice8W *iface, DWORD *out )
+{
+    FIXME( "iface %p, out %p stub!\n", iface, out );
+
+    if (!out) return E_POINTER;
+
+    return DIERR_UNSUPPORTED;
+}
+
+static HRESULT WINAPI hid_joystick_SendForceFeedbackCommand( IDirectInputDevice8W *iface, DWORD command )
+{
+    FIXME( "iface %p, command %x stub!\n", iface, command );
+
+    switch (command)
+    {
+    case DISFFC_RESET:
+    case DISFFC_STOPALL:
+    case DISFFC_PAUSE:
+    case DISFFC_CONTINUE:
+    case DISFFC_SETACTUATORSON:
+    case DISFFC_SETACTUATORSOFF:
+        return DIERR_UNSUPPORTED;
+    }
+
+    return DIERR_INVALIDPARAM;
+}
+
+static HRESULT WINAPI hid_joystick_EnumCreatedEffectObjects( IDirectInputDevice8W *iface,
+                                                             LPDIENUMCREATEDEFFECTOBJECTSCALLBACK callback,
+                                                             void *context, DWORD flags )
+{
+    FIXME( "iface %p, callback %p, context %p, flags %#x stub!\n", iface, callback, context, flags );
+
+    if (!callback) return DIERR_INVALIDPARAM;
+
+    return DIERR_UNSUPPORTED;
+}
+
 static HRESULT WINAPI hid_joystick_Poll( IDirectInputDevice8W *iface )
 {
     struct hid_joystick *impl = impl_from_IDirectInputDevice8W( iface );
@@ -837,12 +908,12 @@ static const IDirectInputDevice8WVtbl hid_joystick_vtbl =
     IDirectInputDevice2WImpl_RunControlPanel,
     IDirectInputDevice2WImpl_Initialize,
     /*** IDirectInputDevice2 methods ***/
-    IDirectInputDevice2WImpl_CreateEffect,
-    IDirectInputDevice2WImpl_EnumEffects,
-    IDirectInputDevice2WImpl_GetEffectInfo,
-    IDirectInputDevice2WImpl_GetForceFeedbackState,
-    IDirectInputDevice2WImpl_SendForceFeedbackCommand,
-    IDirectInputDevice2WImpl_EnumCreatedEffectObjects,
+    hid_joystick_CreateEffect,
+    hid_joystick_EnumEffects,
+    hid_joystick_GetEffectInfo,
+    hid_joystick_GetForceFeedbackState,
+    hid_joystick_SendForceFeedbackCommand,
+    hid_joystick_EnumCreatedEffectObjects,
     IDirectInputDevice2WImpl_Escape,
     hid_joystick_Poll,
     IDirectInputDevice2WImpl_SendDeviceData,
diff --git a/dlls/dinput8/tests/hid.c b/dlls/dinput8/tests/hid.c
index 1ab6e645947..e6439ed8fe5 100644
--- a/dlls/dinput8/tests/hid.c
+++ b/dlls/dinput8/tests/hid.c
@@ -4038,7 +4038,6 @@ static void test_simple_joystick(void)
     check_member( objinst, expect_objects[5], "%u", wReportId );
 
     hr = IDirectInputDevice8_EnumEffects( device, NULL, NULL, DIEFT_ALL );
-    todo_wine
     ok( hr == DIERR_INVALIDPARAM, "IDirectInputDevice8_EnumEffects returned %#x\n", hr );
     res = 0;
     hr = IDirectInputDevice8_EnumEffects( device, check_effect_count, &res, 0xfe );
@@ -4054,18 +4053,14 @@ static void test_simple_joystick(void)
         check_effects_params.expect_count - check_effects_params.index );
 
     hr = IDirectInputDevice8_GetEffectInfo( device, NULL, &GUID_Sine );
-    todo_wine
     ok( hr == E_POINTER, "IDirectInputDevice8_GetEffectInfo returned %#x\n", hr );
     effectinfo.dwSize = sizeof(DIEFFECTINFOW) + 1;
     hr = IDirectInputDevice8_GetEffectInfo( device, &effectinfo, &GUID_Sine );
-    todo_wine
     ok( hr == DIERR_INVALIDPARAM, "IDirectInputDevice8_GetEffectInfo returned %#x\n", hr );
     effectinfo.dwSize = sizeof(DIEFFECTINFOW);
     hr = IDirectInputDevice8_GetEffectInfo( device, &effectinfo, &GUID_NULL );
-    todo_wine
     ok( hr == DIERR_DEVICENOTREG, "IDirectInputDevice8_GetEffectInfo returned %#x\n", hr );
     hr = IDirectInputDevice8_GetEffectInfo( device, &effectinfo, &GUID_Sine );
-    todo_wine
     ok( hr == DIERR_DEVICENOTREG, "IDirectInputDevice8_GetEffectInfo returned %#x\n", hr );
 
     hr = IDirectInputDevice8_SetDataFormat( device, NULL );
@@ -4645,18 +4640,14 @@ static void test_simple_joystick(void)
     winetest_pop_context();
 
     hr = IDirectInputDevice8_GetForceFeedbackState( device, NULL );
-    todo_wine
     ok( hr == E_POINTER, "IDirectInputDevice8_GetForceFeedbackState returned %#x\n", hr );
     res = 0xdeadbeef;
     hr = IDirectInputDevice8_GetForceFeedbackState( device, &res );
-    todo_wine
     ok( hr == DIERR_UNSUPPORTED, "IDirectInputDevice8_GetForceFeedbackState returned %#x\n", hr );
 
     hr = IDirectInputDevice8_SendForceFeedbackCommand( device, 0xdeadbeef );
-    todo_wine
     ok( hr == DIERR_INVALIDPARAM, "IDirectInputDevice8_SendForceFeedbackCommand returned %#x\n", hr );
     hr = IDirectInputDevice8_SendForceFeedbackCommand( device, DISFFC_RESET );
-    todo_wine
     ok( hr == DIERR_UNSUPPORTED, "IDirectInputDevice8_SendForceFeedbackCommand returned %#x\n", hr );
 
     objdata[0].dwOfs = 0xd;
@@ -5713,6 +5704,7 @@ static void test_force_feedback_joystick( void )
 
     effectinfo.dwSize = sizeof(DIEFFECTINFOW);
     hr = IDirectInputDevice8_GetEffectInfo( device, &effectinfo, &GUID_Sine );
+    todo_wine
     ok( hr == DI_OK, "IDirectInputDevice8_GetEffectInfo returned %#x\n", hr );
     todo_wine
     check_member_guid( effectinfo, expect_effects[0], guid );
@@ -5802,7 +5794,6 @@ static void test_force_feedback_joystick( void )
     ok( hr == 0x80040301, "IDirectInputDevice8_GetForceFeedbackState returned %#x\n", hr );
 
     hr = IDirectInputDevice8_SendForceFeedbackCommand( device, 0xdeadbeef );
-    todo_wine
     ok( hr == DIERR_INVALIDPARAM, "IDirectInputDevice8_SendForceFeedbackCommand returned %#x\n", hr );
 
     set_hid_expect( file, &expect_dc_reset, sizeof(expect_dc_reset) );




More information about the wine-cvs mailing list