mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 12:19:49 +00:00
dinput: Proper conversion of username parameters for Set and BuildActionMap.
This commit is contained in:
parent
7e3d51b7c6
commit
64c1f4778c
3 changed files with 66 additions and 6 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue