[PATCH 2/6] dinput: Factor out IDirectInputDevice_GetObjectInfo WtoA conversions.
Rémi Bernon
rbernon at codeweavers.com
Wed May 26 04:23:04 CDT 2021
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/dinput/ansi.c | 19 ++++++++++++++++++
dlls/dinput/device.c | 32 -------------------------------
dlls/dinput/joystick.c | 27 --------------------------
dlls/dinput/joystick_linux.c | 2 +-
dlls/dinput/joystick_linuxinput.c | 2 +-
dlls/dinput/joystick_osx.c | 2 +-
dlls/dinput/joystick_private.h | 3 ---
dlls/dinput/keyboard.c | 25 +-----------------------
dlls/dinput/mouse.c | 29 +---------------------------
9 files changed, 24 insertions(+), 117 deletions(-)
diff --git a/dlls/dinput/ansi.c b/dlls/dinput/ansi.c
index 5158d326073..eafbeafbf18 100644
--- a/dlls/dinput/ansi.c
+++ b/dlls/dinput/ansi.c
@@ -169,6 +169,25 @@ HRESULT WINAPI IDirectInputDevice2AImpl_SetCooperativeLevel( IDirectInputDevice8
return IDirectInputDevice8_SetCooperativeLevel( iface_w, window, flags );
}
+HRESULT WINAPI IDirectInputDevice2AImpl_GetObjectInfo( IDirectInputDevice8A *iface_a, DIDEVICEOBJECTINSTANCEA *instance_a,
+ DWORD obj, DWORD how )
+{
+ IDirectInputDeviceImpl *impl = impl_from_IDirectInputDevice8A( iface_a );
+ IDirectInputDevice8W *iface_w = IDirectInputDevice8W_from_impl( impl );
+ DIDEVICEOBJECTINSTANCEW instance_w = {sizeof(instance_w)};
+ HRESULT hr;
+
+ if (!instance_a) return E_POINTER;
+ if (instance_a->dwSize != sizeof(DIDEVICEOBJECTINSTANCEA) &&
+ instance_a->dwSize != sizeof(DIDEVICEOBJECTINSTANCE_DX3A))
+ return DIERR_INVALIDPARAM;
+
+ hr = IDirectInputDevice8_GetObjectInfo( iface_w, &instance_w, obj, how );
+ dideviceobjectinstance_wtoa( &instance_w, instance_a );
+
+ return hr;
+}
+
HRESULT WINAPI IDirectInputDevice2AImpl_RunControlPanel( IDirectInputDevice8A *iface_a, HWND owner, DWORD flags )
{
IDirectInputDeviceImpl *impl = impl_from_IDirectInputDevice8A( iface_a );
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
index c1388551644..16bf4c663a1 100644
--- a/dlls/dinput/device.c
+++ b/dlls/dinput/device.c
@@ -1447,38 +1447,6 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetProperty(
return DI_OK;
}
-HRESULT WINAPI IDirectInputDevice2AImpl_GetObjectInfo(
- LPDIRECTINPUTDEVICE8A iface,
- LPDIDEVICEOBJECTINSTANCEA pdidoi,
- DWORD dwObj,
- DWORD dwHow)
-{
- IDirectInputDeviceImpl *This = impl_from_IDirectInputDevice8A(iface);
- DIDEVICEOBJECTINSTANCEW didoiW;
- HRESULT res;
-
- if (!pdidoi) return E_POINTER;
- if (pdidoi->dwSize != sizeof(DIDEVICEOBJECTINSTANCEA) &&
- pdidoi->dwSize != sizeof(DIDEVICEOBJECTINSTANCE_DX3A))
- return DIERR_INVALIDPARAM;
-
- didoiW.dwSize = sizeof(didoiW);
- res = IDirectInputDevice2WImpl_GetObjectInfo(IDirectInputDevice8W_from_impl(This), &didoiW, dwObj, dwHow);
- if (res == DI_OK)
- {
- DWORD dwSize = pdidoi->dwSize;
-
- memset(pdidoi, 0, pdidoi->dwSize);
- pdidoi->dwSize = dwSize;
- pdidoi->guidType = didoiW.guidType;
- pdidoi->dwOfs = didoiW.dwOfs;
- pdidoi->dwType = didoiW.dwType;
- pdidoi->dwFlags = didoiW.dwFlags;
- }
-
- return res;
-}
-
HRESULT WINAPI IDirectInputDevice2WImpl_GetObjectInfo(
LPDIRECTINPUTDEVICE8W iface,
LPDIDEVICEOBJECTINSTANCEW pdidoi,
diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c
index ab8b87f552b..b79935ede7c 100644
--- a/dlls/dinput/joystick.c
+++ b/dlls/dinput/joystick.c
@@ -574,33 +574,6 @@ HRESULT WINAPI JoystickWGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface,
return res;
}
-HRESULT WINAPI JoystickAGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8A iface,
- LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow)
-{
- JoystickGenericImpl *This = impl_from_IDirectInputDevice8A(iface);
- HRESULT res;
- DIDEVICEOBJECTINSTANCEW didoiW;
- DWORD dwSize;
-
- if (!pdidoi) return E_POINTER;
- if (pdidoi->dwSize != sizeof(DIDEVICEOBJECTINSTANCEA) &&
- pdidoi->dwSize != sizeof(DIDEVICEOBJECTINSTANCE_DX3A))
- return DIERR_INVALIDPARAM;
-
- didoiW.dwSize = sizeof(didoiW);
- res = JoystickWGenericImpl_GetObjectInfo(IDirectInputDevice8W_from_impl(This), &didoiW, dwObj, dwHow);
- if (res != DI_OK) return res;
-
- dwSize = pdidoi->dwSize;
- memset(pdidoi, 0, pdidoi->dwSize);
- memcpy(pdidoi, &didoiW, FIELD_OFFSET(DIDEVICEOBJECTINSTANCEW, tszName));
- pdidoi->dwSize = dwSize;
- WideCharToMultiByte(CP_ACP, 0, didoiW.tszName, -1, pdidoi->tszName,
- sizeof(pdidoi->tszName), NULL, NULL);
-
- return res;
-}
-
/******************************************************************************
* GetProperty : get input device properties
*/
diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c
index ec4cb94c034..091e1f2152e 100644
--- a/dlls/dinput/joystick_linux.c
+++ b/dlls/dinput/joystick_linux.c
@@ -918,7 +918,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
IDirectInputDevice2AImpl_SetDataFormat,
IDirectInputDevice2AImpl_SetEventNotification,
IDirectInputDevice2AImpl_SetCooperativeLevel,
- JoystickAGenericImpl_GetObjectInfo,
+ IDirectInputDevice2AImpl_GetObjectInfo,
JoystickLinuxAImpl_GetDeviceInfo,
IDirectInputDevice2AImpl_RunControlPanel,
IDirectInputDevice2AImpl_Initialize,
diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index 14acbb5cd8c..49eaf3ed44d 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -1439,7 +1439,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
IDirectInputDevice2AImpl_SetDataFormat,
IDirectInputDevice2AImpl_SetEventNotification,
IDirectInputDevice2AImpl_SetCooperativeLevel,
- JoystickAGenericImpl_GetObjectInfo,
+ IDirectInputDevice2AImpl_GetObjectInfo,
JoystickAImpl_GetDeviceInfo,
IDirectInputDevice2AImpl_RunControlPanel,
IDirectInputDevice2AImpl_Initialize,
diff --git a/dlls/dinput/joystick_osx.c b/dlls/dinput/joystick_osx.c
index 174a78b7fd4..78e041daf92 100644
--- a/dlls/dinput/joystick_osx.c
+++ b/dlls/dinput/joystick_osx.c
@@ -1590,7 +1590,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
IDirectInputDevice2AImpl_SetDataFormat,
IDirectInputDevice2AImpl_SetEventNotification,
IDirectInputDevice2AImpl_SetCooperativeLevel,
- JoystickAGenericImpl_GetObjectInfo,
+ IDirectInputDevice2AImpl_GetObjectInfo,
JoystickAGenericImpl_GetDeviceInfo,
IDirectInputDevice2AImpl_RunControlPanel,
IDirectInputDevice2AImpl_Initialize,
diff --git a/dlls/dinput/joystick_private.h b/dlls/dinput/joystick_private.h
index 0f191787158..2a25bf4eb23 100644
--- a/dlls/dinput/joystick_private.h
+++ b/dlls/dinput/joystick_private.h
@@ -62,9 +62,6 @@ BOOL device_disabled_registry(const char* name) DECLSPEC_HIDDEN;
HRESULT WINAPI JoystickWGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface,
LPDIDEVICEOBJECTINSTANCEW pdidoi, DWORD dwObj, DWORD dwHow) DECLSPEC_HIDDEN;
-HRESULT WINAPI JoystickAGenericImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8A iface,
- LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow) DECLSPEC_HIDDEN;
-
HRESULT WINAPI JoystickWGenericImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REFGUID rguid, LPDIPROPHEADER pdiph) DECLSPEC_HIDDEN;
HRESULT WINAPI JoystickAGenericImpl_GetCapabilities(LPDIRECTINPUTDEVICE8A iface, LPDIDEVCAPS lpDIDevCaps) DECLSPEC_HIDDEN;
diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
index ca3b1dad669..b1914d057bd 100644
--- a/dlls/dinput/keyboard.c
+++ b/dlls/dinput/keyboard.c
@@ -463,29 +463,6 @@ static DWORD map_dik_to_scan(DWORD dik_code, DWORD subtype)
* GetObjectInfo : get information about a device object such as a button
* or axis
*/
-static HRESULT WINAPI
-SysKeyboardAImpl_GetObjectInfo(
- LPDIRECTINPUTDEVICE8A iface,
- LPDIDEVICEOBJECTINSTANCEA pdidoi,
- DWORD dwObj,
- DWORD dwHow)
-{
- SysKeyboardImpl *This = impl_from_IDirectInputDevice8A(iface);
- HRESULT res;
- LONG scan;
-
- res = IDirectInputDevice2AImpl_GetObjectInfo(iface, pdidoi, dwObj, dwHow);
- if (res != DI_OK) return res;
-
- scan = map_dik_to_scan(DIDFT_GETINSTANCE(pdidoi->dwType), This->subtype);
- if (!GetKeyNameTextA((scan & 0x80) << 17 | (scan & 0x7f) << 16,
- pdidoi->tszName, sizeof(pdidoi->tszName)))
- return DIERR_OBJECTNOTFOUND;
-
- _dump_OBJECTINSTANCEA(pdidoi);
- return res;
-}
-
static HRESULT WINAPI SysKeyboardWImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface,
LPDIDEVICEOBJECTINSTANCEW pdidoi,
DWORD dwObj,
@@ -691,7 +668,7 @@ static const IDirectInputDevice8AVtbl SysKeyboardAvt =
IDirectInputDevice2AImpl_SetDataFormat,
IDirectInputDevice2AImpl_SetEventNotification,
IDirectInputDevice2AImpl_SetCooperativeLevel,
- SysKeyboardAImpl_GetObjectInfo,
+ IDirectInputDevice2AImpl_GetObjectInfo,
SysKeyboardAImpl_GetDeviceInfo,
IDirectInputDevice2AImpl_RunControlPanel,
IDirectInputDevice2AImpl_Initialize,
diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c
index bc99ea37c68..9267d92d6e9 100644
--- a/dlls/dinput/mouse.c
+++ b/dlls/dinput/mouse.c
@@ -796,33 +796,6 @@ static HRESULT WINAPI SysMouseWImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8W iface,
return res;
}
-static HRESULT WINAPI SysMouseAImpl_GetObjectInfo(LPDIRECTINPUTDEVICE8A iface,
- LPDIDEVICEOBJECTINSTANCEA pdidoi, DWORD dwObj, DWORD dwHow)
-{
- SysMouseImpl *This = impl_from_IDirectInputDevice8A(iface);
- HRESULT res;
- DIDEVICEOBJECTINSTANCEW didoiW;
- DWORD dwSize;
-
- if (!pdidoi) return E_POINTER;
- if (pdidoi->dwSize != sizeof(DIDEVICEOBJECTINSTANCEA) &&
- pdidoi->dwSize != sizeof(DIDEVICEOBJECTINSTANCE_DX3A))
- return DIERR_INVALIDPARAM;
-
- didoiW.dwSize = sizeof(didoiW);
- res = SysMouseWImpl_GetObjectInfo(IDirectInputDevice8W_from_impl(This), &didoiW, dwObj, dwHow);
- if (res != DI_OK) return res;
-
- dwSize = pdidoi->dwSize;
- memset(pdidoi, 0, pdidoi->dwSize);
- memcpy(pdidoi, &didoiW, FIELD_OFFSET(DIDEVICEOBJECTINSTANCEW, tszName));
- pdidoi->dwSize = dwSize;
- WideCharToMultiByte(CP_ACP, 0, didoiW.tszName, -1, pdidoi->tszName,
- sizeof(pdidoi->tszName), NULL, NULL);
-
- return res;
-}
-
/******************************************************************************
* GetDeviceInfo : get information about a device's identity
*/
@@ -949,7 +922,7 @@ static const IDirectInputDevice8AVtbl SysMouseAvt =
IDirectInputDevice2AImpl_SetDataFormat,
IDirectInputDevice2AImpl_SetEventNotification,
IDirectInputDevice2AImpl_SetCooperativeLevel,
- SysMouseAImpl_GetObjectInfo,
+ IDirectInputDevice2AImpl_GetObjectInfo,
SysMouseAImpl_GetDeviceInfo,
IDirectInputDevice2AImpl_RunControlPanel,
IDirectInputDevice2AImpl_Initialize,
--
2.31.0
More information about the wine-devel
mailing list