Module: wine Branch: master Commit: dd7b65730dbdea4992f8b4593f16d077ad79c310 URL: http://source.winehq.org/git/wine.git/?a=commit;h=dd7b65730dbdea4992f8b4593f... Author: Bruno Jesus <00cpxxx(a)gmail.com> Date: Wed Aug 17 21:49:55 2016 -0300 dinput: Implement GetDeviceInfo(A) using the W version in the event driver. Signed-off-by: Bruno Jesus <00cpxxx(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dinput/joystick_linuxinput.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c index ff02849..aaed701 100644 --- a/dlls/dinput/joystick_linuxinput.c +++ b/dlls/dinput/joystick_linuxinput.c @@ -339,7 +339,7 @@ static void find_joydevs(void) } } -static void fill_joystick_dideviceinstanceA(LPDIDEVICEINSTANCEA lpddi, DWORD version, int id) +static void fill_joystick_dideviceinstanceW(LPDIDEVICEINSTANCEW lpddi, DWORD version, int id) { DWORD dwSize = lpddi->dwSize; @@ -356,29 +356,31 @@ static void fill_joystick_dideviceinstanceA(LPDIDEVICEINSTANCEA lpddi, DWORD ver else lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_TRADITIONAL << 8); - strcpy(lpddi->tszInstanceName, joydevs[id].name); - strcpy(lpddi->tszProductName, joydevs[id].name); + MultiByteToWideChar(CP_ACP, 0, joydevs[id].name, -1, lpddi->tszInstanceName, MAX_PATH); + MultiByteToWideChar(CP_ACP, 0, joydevs[id].name, -1, lpddi->tszProductName, MAX_PATH); } -static void fill_joystick_dideviceinstanceW(LPDIDEVICEINSTANCEW lpddi, DWORD version, int id) +static void fill_joystick_dideviceinstanceA(LPDIDEVICEINSTANCEA lpddi, DWORD version, int id) { + DIDEVICEINSTANCEW lpddiW; DWORD dwSize = lpddi->dwSize; + lpddiW.dwSize = sizeof(lpddiW); + fill_joystick_dideviceinstanceW(&lpddiW, version, id); + TRACE("%d %p\n", dwSize, lpddi); memset(lpddi, 0, dwSize); - lpddi->dwSize = dwSize; - lpddi->guidInstance = joydevs[id].guid; - lpddi->guidProduct = joydevs[id].guid_product; - lpddi->guidFFDriver = GUID_NULL; - - if (version >= 0x0800) - lpddi->dwDevType = DI8DEVTYPE_JOYSTICK | (DI8DEVTYPEJOYSTICK_STANDARD << 8); - else - lpddi->dwDevType = DIDEVTYPE_JOYSTICK | (DIDEVTYPEJOYSTICK_TRADITIONAL << 8); - - MultiByteToWideChar(CP_ACP, 0, joydevs[id].name, -1, lpddi->tszInstanceName, MAX_PATH); - MultiByteToWideChar(CP_ACP, 0, joydevs[id].name, -1, lpddi->tszProductName, MAX_PATH); + /* Convert W->A */ + lpddi->dwSize = dwSize; + lpddi->guidInstance = lpddiW.guidInstance; + lpddi->guidProduct = lpddiW.guidProduct; + lpddi->dwDevType = lpddiW.dwDevType; + strcpy(lpddi->tszInstanceName, joydevs[id].name); + strcpy(lpddi->tszProductName, joydevs[id].name); + lpddi->guidFFDriver = lpddiW.guidFFDriver; + lpddi->wUsagePage = lpddiW.wUsagePage; + lpddi->wUsage = lpddiW.wUsage; } static HRESULT joydev_enum_deviceA(DWORD dwDevType, DWORD dwFlags, LPDIDEVICEINSTANCEA lpddi, DWORD version, int id)