Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
5f4ee791
Commit
5f4ee791
authored
May 27, 2021
by
Rémi Bernon
Committed by
Alexandre Julliard
May 27, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dinput: Factor out IDirectInputDevice_SetActionMap WtoA conversions.
Signed-off-by:
Rémi Bernon
<
rbernon@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
8109f839
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
36 additions
and
105 deletions
+36
-105
ansi.c
dlls/dinput/ansi.c
+29
-0
device_private.h
dlls/dinput/device_private.h
+2
-0
joystick.c
dlls/dinput/joystick.c
+0
-33
joystick_linux.c
dlls/dinput/joystick_linux.c
+1
-1
joystick_linuxinput.c
dlls/dinput/joystick_linuxinput.c
+1
-1
joystick_osx.c
dlls/dinput/joystick_osx.c
+1
-1
joystick_private.h
dlls/dinput/joystick_private.h
+0
-1
keyboard.c
dlls/dinput/keyboard.c
+1
-34
mouse.c
dlls/dinput/mouse.c
+1
-34
No files found.
dlls/dinput/ansi.c
View file @
5f4ee791
...
...
@@ -521,6 +521,35 @@ HRESULT WINAPI IDirectInputDevice8AImpl_BuildActionMap( IDirectInputDevice8A *if
return
hr
;
}
HRESULT
WINAPI
IDirectInputDevice8AImpl_SetActionMap
(
IDirectInputDevice8A
*
iface_a
,
DIACTIONFORMATA
*
format_a
,
const
char
*
username_a
,
DWORD
flags
)
{
IDirectInputDeviceImpl
*
impl
=
impl_from_IDirectInputDevice8A
(
iface_a
);
IDirectInputDevice8W
*
iface_w
=
IDirectInputDevice8W_from_impl
(
impl
);
DIACTIONFORMATW
format_w
=
{
sizeof
(
format_w
),
sizeof
(
DIACTIONW
)};
HRESULT
hr
;
WCHAR
*
username_w
;
if
(
!
format_a
)
return
E_POINTER
;
if
(
format_a
->
dwSize
!=
sizeof
(
DIACTIONFORMATA
))
return
DIERR_INVALIDPARAM
;
if
(
format_a
->
dwActionSize
!=
sizeof
(
DIACTIONA
))
return
DIERR_INVALIDPARAM
;
if
(
FAILED
(
hr
=
string_atow
(
username_a
,
&
username_w
)))
return
hr
;
format_w
.
dwNumActions
=
format_a
->
dwNumActions
;
format_w
.
rgoAction
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
format_a
->
dwNumActions
*
sizeof
(
DIACTIONW
)
);
if
(
!
format_w
.
rgoAction
)
hr
=
DIERR_OUTOFMEMORY
;
else
{
diactionformat_atow
(
format_a
,
&
format_w
);
hr
=
IDirectInputDevice8_SetActionMap
(
iface_w
,
&
format_w
,
username_w
,
flags
);
diactionformat_wtoa
(
&
format_w
,
format_a
);
HeapFree
(
GetProcessHeap
(),
0
,
format_w
.
rgoAction
);
}
HeapFree
(
GetProcessHeap
(),
0
,
username_w
);
return
hr
;
}
HRESULT
WINAPI
IDirectInputDevice8AImpl_GetImageInfo
(
IDirectInputDevice8A
*
iface_a
,
DIDEVICEIMAGEINFOHEADERA
*
header_a
)
{
IDirectInputDeviceImpl
*
impl
=
impl_from_IDirectInputDevice8A
(
iface_a
);
...
...
dlls/dinput/device_private.h
View file @
5f4ee791
...
...
@@ -250,6 +250,8 @@ extern HRESULT WINAPI IDirectInputDevice8WImpl_BuildActionMap(LPDIRECTINPUTDEVIC
DWORD
dwFlags
)
DECLSPEC_HIDDEN
;
extern
HRESULT
WINAPI
IDirectInputDevice8AImpl_BuildActionMap
(
LPDIRECTINPUTDEVICE8A
iface
,
DIACTIONFORMATA
*
format
,
const
char
*
username
,
DWORD
flags
)
DECLSPEC_HIDDEN
;
extern
HRESULT
WINAPI
IDirectInputDevice8AImpl_SetActionMap
(
LPDIRECTINPUTDEVICE8A
iface
,
DIACTIONFORMATA
*
format
,
const
char
*
username
,
DWORD
flags
)
DECLSPEC_HIDDEN
;
extern
HRESULT
WINAPI
IDirectInputDevice8AImpl_GetImageInfo
(
LPDIRECTINPUTDEVICE8A
iface
,
LPDIDEVICEIMAGEINFOHEADERA
lpdiDevImageInfoHeader
)
DECLSPEC_HIDDEN
;
extern
HRESULT
WINAPI
IDirectInputDevice8WImpl_GetImageInfo
(
LPDIRECTINPUTDEVICE8W
iface
,
...
...
dlls/dinput/joystick.c
View file @
5f4ee791
...
...
@@ -60,10 +60,6 @@ const GUID DInput_PIDVID_Product_GUID = { /* device_pidvid-0000-0000-0000-504944
0x00000000
,
0x0000
,
0x0000
,
{
0x00
,
0x00
,
0x50
,
0x49
,
0x44
,
0x56
,
0x49
,
0x44
}
};
static
inline
JoystickGenericImpl
*
impl_from_IDirectInputDevice8A
(
IDirectInputDevice8A
*
iface
)
{
return
CONTAINING_RECORD
(
CONTAINING_RECORD
(
iface
,
IDirectInputDeviceImpl
,
IDirectInputDevice8A_iface
),
JoystickGenericImpl
,
base
);
}
static
inline
JoystickGenericImpl
*
impl_from_IDirectInputDevice8W
(
IDirectInputDevice8W
*
iface
)
{
return
CONTAINING_RECORD
(
CONTAINING_RECORD
(
iface
,
IDirectInputDeviceImpl
,
IDirectInputDevice8W_iface
),
JoystickGenericImpl
,
base
);
...
...
@@ -785,35 +781,6 @@ HRESULT WINAPI JoystickWGenericImpl_SetActionMap(LPDIRECTINPUTDEVICE8W iface,
return
_set_action_map
(
iface
,
lpdiaf
,
lpszUserName
,
dwFlags
,
This
->
base
.
data_format
.
wine_df
);
}
HRESULT
WINAPI
JoystickAGenericImpl_SetActionMap
(
LPDIRECTINPUTDEVICE8A
iface
,
LPDIACTIONFORMATA
lpdiaf
,
LPCSTR
lpszUserName
,
DWORD
dwFlags
)
{
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
);
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
;
}
/*
* This maps the read value (from the input event) to a value in the
* 'wanted' range.
...
...
dlls/dinput/joystick_linux.c
View file @
5f4ee791
...
...
@@ -910,7 +910,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
IDirectInputDevice7AImpl_EnumEffectsInFile
,
IDirectInputDevice7AImpl_WriteEffectToFile
,
IDirectInputDevice8AImpl_BuildActionMap
,
JoystickAGeneric
Impl_SetActionMap
,
IDirectInputDevice8A
Impl_SetActionMap
,
IDirectInputDevice8AImpl_GetImageInfo
};
...
...
dlls/dinput/joystick_linuxinput.c
View file @
5f4ee791
...
...
@@ -1340,7 +1340,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
IDirectInputDevice7AImpl_EnumEffectsInFile
,
IDirectInputDevice7AImpl_WriteEffectToFile
,
IDirectInputDevice8AImpl_BuildActionMap
,
JoystickAGeneric
Impl_SetActionMap
,
IDirectInputDevice8A
Impl_SetActionMap
,
IDirectInputDevice8AImpl_GetImageInfo
};
...
...
dlls/dinput/joystick_osx.c
View file @
5f4ee791
...
...
@@ -1601,7 +1601,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
IDirectInputDevice7AImpl_EnumEffectsInFile
,
IDirectInputDevice7AImpl_WriteEffectToFile
,
IDirectInputDevice8AImpl_BuildActionMap
,
JoystickAGeneric
Impl_SetActionMap
,
IDirectInputDevice8A
Impl_SetActionMap
,
IDirectInputDevice8AImpl_GetImageInfo
};
...
...
dlls/dinput/joystick_private.h
View file @
5f4ee791
...
...
@@ -79,7 +79,6 @@ HRESULT WINAPI JoystickWGenericImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W iface,
HRESULT
WINAPI
JoystickWGenericImpl_BuildActionMap
(
LPDIRECTINPUTDEVICE8W
iface
,
LPDIACTIONFORMATW
lpdiaf
,
LPCWSTR
lpszUserName
,
DWORD
dwFlags
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
JoystickAGenericImpl_SetActionMap
(
LPDIRECTINPUTDEVICE8A
iface
,
LPDIACTIONFORMATA
lpdiaf
,
LPCSTR
lpszUserName
,
DWORD
dwFlags
)
DECLSPEC_HIDDEN
;
HRESULT
WINAPI
JoystickWGenericImpl_SetActionMap
(
LPDIRECTINPUTDEVICE8W
iface
,
LPDIACTIONFORMATW
lpdiaf
,
LPCWSTR
lpszUserName
,
DWORD
dwFlags
)
DECLSPEC_HIDDEN
;
DWORD
typeFromGUID
(
REFGUID
guid
)
DECLSPEC_HIDDEN
;
...
...
dlls/dinput/keyboard.c
View file @
5f4ee791
...
...
@@ -51,10 +51,6 @@ struct SysKeyboardImpl
DWORD
subtype
;
};
static
inline
SysKeyboardImpl
*
impl_from_IDirectInputDevice8A
(
IDirectInputDevice8A
*
iface
)
{
return
CONTAINING_RECORD
(
CONTAINING_RECORD
(
iface
,
IDirectInputDeviceImpl
,
IDirectInputDevice8A_iface
),
SysKeyboardImpl
,
base
);
}
static
inline
SysKeyboardImpl
*
impl_from_IDirectInputDevice8W
(
IDirectInputDevice8W
*
iface
)
{
return
CONTAINING_RECORD
(
CONTAINING_RECORD
(
iface
,
IDirectInputDeviceImpl
,
IDirectInputDevice8W_iface
),
SysKeyboardImpl
,
base
);
...
...
@@ -565,35 +561,6 @@ static HRESULT WINAPI SysKeyboardWImpl_SetActionMap(LPDIRECTINPUTDEVICE8W iface,
return
_set_action_map
(
iface
,
lpdiaf
,
lpszUserName
,
dwFlags
,
&
c_dfDIKeyboard
);
}
static
HRESULT
WINAPI
SysKeyboardAImpl_SetActionMap
(
LPDIRECTINPUTDEVICE8A
iface
,
LPDIACTIONFORMATA
lpdiaf
,
LPCSTR
lpszUserName
,
DWORD
dwFlags
)
{
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
);
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
;
}
static
const
IDirectInputDevice8AVtbl
SysKeyboardAvt
=
{
IDirectInputDevice2AImpl_QueryInterface
,
...
...
@@ -626,7 +593,7 @@ static const IDirectInputDevice8AVtbl SysKeyboardAvt =
IDirectInputDevice7AImpl_EnumEffectsInFile
,
IDirectInputDevice7AImpl_WriteEffectToFile
,
IDirectInputDevice8AImpl_BuildActionMap
,
SysKeyboard
AImpl_SetActionMap
,
IDirectInputDevice8
AImpl_SetActionMap
,
IDirectInputDevice8AImpl_GetImageInfo
};
...
...
dlls/dinput/mouse.c
View file @
5f4ee791
...
...
@@ -78,10 +78,6 @@ struct SysMouseImpl
WARP_MOUSE
warp_override
;
};
static
inline
SysMouseImpl
*
impl_from_IDirectInputDevice8A
(
IDirectInputDevice8A
*
iface
)
{
return
CONTAINING_RECORD
(
CONTAINING_RECORD
(
iface
,
IDirectInputDeviceImpl
,
IDirectInputDevice8A_iface
),
SysMouseImpl
,
base
);
}
static
inline
SysMouseImpl
*
impl_from_IDirectInputDevice8W
(
IDirectInputDevice8W
*
iface
)
{
return
CONTAINING_RECORD
(
CONTAINING_RECORD
(
iface
,
IDirectInputDeviceImpl
,
IDirectInputDevice8W_iface
),
SysMouseImpl
,
base
);
...
...
@@ -818,35 +814,6 @@ static HRESULT WINAPI SysMouseWImpl_SetActionMap(LPDIRECTINPUTDEVICE8W iface,
return
_set_action_map
(
iface
,
lpdiaf
,
lpszUserName
,
dwFlags
,
&
c_dfDIMouse2
);
}
static
HRESULT
WINAPI
SysMouseAImpl_SetActionMap
(
LPDIRECTINPUTDEVICE8A
iface
,
LPDIACTIONFORMATA
lpdiaf
,
LPCSTR
lpszUserName
,
DWORD
dwFlags
)
{
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
);
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
;
}
static
const
IDirectInputDevice8AVtbl
SysMouseAvt
=
{
IDirectInputDevice2AImpl_QueryInterface
,
...
...
@@ -879,7 +846,7 @@ static const IDirectInputDevice8AVtbl SysMouseAvt =
IDirectInputDevice7AImpl_EnumEffectsInFile
,
IDirectInputDevice7AImpl_WriteEffectToFile
,
IDirectInputDevice8AImpl_BuildActionMap
,
SysMouse
AImpl_SetActionMap
,
IDirectInputDevice8
AImpl_SetActionMap
,
IDirectInputDevice8AImpl_GetImageInfo
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment