Lucas Fialho Zawacki : dinput: Proper conversion of username parameters for Set and BuildActionMap.

Alexandre Julliard julliard at winehq.org
Wed Aug 24 14:05:18 CDT 2011


Module: wine
Branch: master
Commit: 64c1f4778c339f8cb77f4ba03a99465b0f983715
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=64c1f4778c339f8cb77f4ba03a99465b0f983715

Author: Lucas Fialho Zawacki <lfzawacki at 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;
 }




More information about the wine-cvs mailing list