Module: wine Branch: master Commit: 64c1f4778c339f8cb77f4ba03a99465b0f983715 URL: http://source.winehq.org/git/wine.git/?a=commit;h=64c1f4778c339f8cb77f4ba03a...
Author: Lucas Fialho Zawacki lfzawacki@gmail.com Date: Tue Aug 23 23:42:53 2011 -0300
dinput: Proper conversion of username parameters for Set and BuildActionMap.
---
dlls/dinput/joystick.c | 24 ++++++++++++++++++++++-- dlls/dinput/keyboard.c | 24 ++++++++++++++++++++++-- dlls/dinput/mouse.c | 24 ++++++++++++++++++++++-- 3 files changed, 66 insertions(+), 6 deletions(-)
diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c index 779472d..8dd1566 100644 --- a/dlls/dinput/joystick.c +++ b/dlls/dinput/joystick.c @@ -486,14 +486,24 @@ HRESULT WINAPI JoystickAGenericImpl_BuildActionMap(LPDIRECTINPUTDEVICE8A iface, JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; + WCHAR *lpszUserNameW = NULL; + int username_size;
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf);
- hr = JoystickWGenericImpl_BuildActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); + if (lpszUserName != NULL) + { + username_size = MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, NULL, 0); + lpszUserNameW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*username_size); + MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, lpszUserNameW, username_size); + } + + hr = JoystickWGenericImpl_BuildActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, lpszUserNameW, dwFlags);
_copy_diactionformatWtoA(lpdiaf, &diafW); HeapFree(GetProcessHeap(), 0, diafW.rgoAction); + HeapFree(GetProcessHeap(), 0, lpszUserNameW);
return hr; } @@ -518,13 +528,23 @@ HRESULT WINAPI JoystickAGenericImpl_SetActionMap(LPDIRECTINPUTDEVICE8A iface, JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; + WCHAR *lpszUserNameW = NULL; + int username_size;
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf);
- hr = JoystickWGenericImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); + if (lpszUserName != NULL) + { + username_size = MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, NULL, 0); + lpszUserNameW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*username_size); + MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, lpszUserNameW, username_size); + } + + hr = JoystickWGenericImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, lpszUserNameW, dwFlags);
HeapFree(GetProcessHeap(), 0, diafW.rgoAction); + HeapFree(GetProcessHeap(), 0, lpszUserNameW);
return hr; } diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c index cade73f..4de8692 100644 --- a/dlls/dinput/keyboard.c +++ b/dlls/dinput/keyboard.c @@ -542,14 +542,24 @@ static HRESULT WINAPI SysKeyboardAImpl_BuildActionMap(LPDIRECTINPUTDEVICE8A ifac SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; + WCHAR *lpszUserNameW = NULL; + int username_size;
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf);
- hr = SysKeyboardWImpl_BuildActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); + if (lpszUserName != NULL) + { + username_size = MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, NULL, 0); + lpszUserNameW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*username_size); + MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, lpszUserNameW, username_size); + } + + hr = SysKeyboardWImpl_BuildActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, lpszUserNameW, dwFlags);
_copy_diactionformatWtoA(lpdiaf, &diafW); HeapFree(GetProcessHeap(), 0, diafW.rgoAction); + HeapFree(GetProcessHeap(), 0, lpszUserNameW);
return hr; } @@ -572,13 +582,23 @@ static HRESULT WINAPI SysKeyboardAImpl_SetActionMap(LPDIRECTINPUTDEVICE8A iface, SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; + WCHAR *lpszUserNameW = NULL; + int username_size;
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf);
- hr = SysKeyboardWImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); + if (lpszUserName != NULL) + { + username_size = MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, NULL, 0); + lpszUserNameW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*username_size); + MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, lpszUserNameW, username_size); + } + + hr = SysKeyboardWImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, lpszUserNameW, dwFlags);
HeapFree(GetProcessHeap(), 0, diafW.rgoAction); + HeapFree(GetProcessHeap(), 0, lpszUserNameW);
return hr; } diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c index c362c3d..011deb0 100644 --- a/dlls/dinput/mouse.c +++ b/dlls/dinput/mouse.c @@ -791,14 +791,24 @@ static HRESULT WINAPI SysMouseAImpl_BuildActionMap(LPDIRECTINPUTDEVICE8A iface, SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; + WCHAR *lpszUserNameW = NULL; + int username_size;
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf);
- hr = SysMouseWImpl_BuildActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); + if (lpszUserName != NULL) + { + username_size = MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, NULL, 0); + lpszUserNameW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*username_size); + MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, lpszUserNameW, username_size); + } + + hr = SysMouseWImpl_BuildActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, lpszUserNameW, dwFlags);
_copy_diactionformatWtoA(lpdiaf, &diafW); HeapFree(GetProcessHeap(), 0, diafW.rgoAction); + HeapFree(GetProcessHeap(), 0, lpszUserNameW);
return hr; } @@ -821,13 +831,23 @@ static HRESULT WINAPI SysMouseAImpl_SetActionMap(LPDIRECTINPUTDEVICE8A iface, SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface); DIACTIONFORMATW diafW; HRESULT hr; + WCHAR *lpszUserNameW = NULL; + int username_size;
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiaf->dwNumActions); _copy_diactionformatAtoW(&diafW, lpdiaf);
- hr = SysMouseWImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, NULL, dwFlags); + if (lpszUserName != NULL) + { + username_size = MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, NULL, 0); + lpszUserNameW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR)*username_size); + MultiByteToWideChar(CP_ACP, 0, lpszUserName, -1, lpszUserNameW, username_size); + } + + hr = SysMouseWImpl_SetActionMap(&This->base.IDirectInputDevice8W_iface, &diafW, lpszUserNameW, dwFlags);
HeapFree(GetProcessHeap(), 0, diafW.rgoAction); + HeapFree(GetProcessHeap(), 0, lpszUserNameW);
return hr; }