Module: wine Branch: master Commit: 44303b6625983534342fb44b06d558ba7d4934fe URL: http://source.winehq.org/git/wine.git/?a=commit;h=44303b6625983534342fb44b06...
Author: Bruno Jesus 00cpxxx@gmail.com Date: Thu Aug 18 16:40:22 2016 -0300
dinput: Implement DIPROP_PRODUCTNAME in GetProperty.
Signed-off-by: Bruno Jesus 00cpxxx@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dinput/joystick.c | 6 +++++- dlls/dinput/tests/joystick.c | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c index 46ea316..52ff925 100644 --- a/dlls/dinput/joystick.c +++ b/dlls/dinput/joystick.c @@ -583,6 +583,7 @@ HRESULT WINAPI JoystickWGenericImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REF } break; } + case (DWORD_PTR) DIPROP_PRODUCTNAME: case (DWORD_PTR) DIPROP_INSTANCENAME: { DIPROPSTRING *ps = (DIPROPSTRING*) pdiph; DIDEVICEINSTANCEW didev; @@ -590,7 +591,10 @@ HRESULT WINAPI JoystickWGenericImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REF didev.dwSize = sizeof(didev);
IDirectInputDevice_GetDeviceInfo(iface, &didev); - lstrcpynW(ps->wsz, didev.tszInstanceName, MAX_PATH); + if (LOWORD(rguid) == (DWORD_PTR) DIPROP_PRODUCTNAME) + lstrcpynW(ps->wsz, didev.tszProductName, MAX_PATH); + else + lstrcpynW(ps->wsz, didev.tszInstanceName, MAX_PATH);
return DI_OK; } diff --git a/dlls/dinput/tests/joystick.c b/dlls/dinput/tests/joystick.c index 00d3b60..77bb729 100644 --- a/dlls/dinput/tests/joystick.c +++ b/dlls/dinput/tests/joystick.c @@ -253,6 +253,14 @@ static BOOL CALLBACK EnumJoysticks(const DIDEVICEINSTANCEA *lpddi, void *pvRef) ok(!lstrcmpW(nameBuffer, dps.wsz), "DIPROP_INSTANCENAME returned is wrong. Expected: %s Got: %s\n", wine_dbgstr_w(nameBuffer), wine_dbgstr_w(dps.wsz));
+ hr = IDirectInputDevice_GetProperty(pJoystick, DIPROP_PRODUCTNAME, &dps.diph); + ok(SUCCEEDED(hr), "IDirectInput_GetProperty() for DIPROP_PRODUCTNAME failed: %08x\n", hr); + + /* Test if product name is the same as present in DIDEVICEINSTANCE */ + MultiByteToWideChar(CP_ACP, 0, lpddi->tszProductName, -1, nameBuffer, MAX_PATH); + ok(!lstrcmpW(nameBuffer, dps.wsz), "DIPROP_PRODUCTNAME returned is wrong. Expected: %s Got: %s\n", + wine_dbgstr_w(nameBuffer), wine_dbgstr_w(dps.wsz)); + /* Test for GUIDPATH properties */ memset(&dpg, 0, sizeof(dpg)); dpg.diph.dwSize = sizeof(DIPROPGUIDANDPATH);