Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
d3885f92
Commit
d3885f92
authored
Aug 16, 2021
by
Rémi Bernon
Committed by
Alexandre Julliard
Aug 17, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winebus.sys: Return NTSTATUS from build_report_descriptor.
Signed-off-by:
Rémi Bernon
<
rbernon@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
12ef137b
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
39 additions
and
39 deletions
+39
-39
bus_sdl.c
dlls/winebus.sys/bus_sdl.c
+28
-28
bus_udev.c
dlls/winebus.sys/bus_udev.c
+11
-11
No files found.
dlls/winebus.sys/bus_sdl.c
View file @
d3885f92
...
...
@@ -251,7 +251,7 @@ static BOOL descriptor_add_haptic(struct platform_private *ext)
return
TRUE
;
}
static
BOOL
build_report_descriptor
(
struct
platform_private
*
ext
)
static
NTSTATUS
build_report_descriptor
(
struct
platform_private
*
ext
)
{
INT
i
;
INT
report_size
;
...
...
@@ -317,36 +317,36 @@ static BOOL build_report_descriptor(struct platform_private *ext)
TRACE
(
"Report will be %i bytes
\n
"
,
report_size
);
if
(
!
hid_descriptor_begin
(
&
ext
->
desc
,
device_usage
[
0
],
device_usage
[
1
]))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
axis_count
==
6
&&
button_count
>=
14
)
{
if
(
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
axis_count
,
HID_USAGE_PAGE_GENERIC
,
controller_usages
,
FALSE
,
16
,
0
,
0xffff
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
else
if
(
axis_count
)
{
if
(
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
axis_count
,
HID_USAGE_PAGE_GENERIC
,
joystick_usages
,
FALSE
,
16
,
0
,
0xffff
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
if
(
ball_count
&&
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
ball_count
*
2
,
HID_USAGE_PAGE_GENERIC
,
&
joystick_usages
[
axis_count
],
TRUE
,
8
,
0x81
,
0x7f
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
button_count
&&
!
hid_descriptor_add_buttons
(
&
ext
->
desc
,
HID_USAGE_PAGE_BUTTON
,
1
,
button_count
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
hat_count
&&
!
hid_descriptor_add_hatswitch
(
&
ext
->
desc
,
hat_count
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
descriptor_add_haptic
(
ext
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
hid_descriptor_end
(
&
ext
->
desc
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
ext
->
buffer_length
=
report_size
;
if
(
!
(
ext
->
report_buffer
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
report_size
)))
...
...
@@ -358,12 +358,12 @@ static BOOL build_report_descriptor(struct platform_private *ext)
for
(
i
=
0
;
i
<
hat_count
;
i
++
)
set_hat_value
(
ext
,
i
,
pSDL_JoystickGetHat
(
ext
->
sdl_joystick
,
i
));
return
TRUE
;
return
STATUS_SUCCESS
;
failed:
HeapFree
(
GetProcessHeap
(),
0
,
ext
->
report_buffer
);
hid_descriptor_free
(
&
ext
->
desc
);
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
static
SHORT
compose_dpad_value
(
SDL_GameController
*
joystick
)
...
...
@@ -393,7 +393,7 @@ static SHORT compose_dpad_value(SDL_GameController *joystick)
return
SDL_HAT_CENTERED
;
}
static
BOOL
build_mapped_report_descriptor
(
struct
platform_private
*
ext
)
static
NTSTATUS
build_mapped_report_descriptor
(
struct
platform_private
*
ext
)
{
static
const
USAGE
left_axis_usages
[]
=
{
HID_USAGE_GENERIC_X
,
HID_USAGE_GENERIC_Y
};
static
const
USAGE
right_axis_usages
[]
=
{
HID_USAGE_GENERIC_RX
,
HID_USAGE_GENERIC_RY
};
...
...
@@ -413,42 +413,42 @@ static BOOL build_mapped_report_descriptor(struct platform_private *ext)
TRACE
(
"Report will be %i bytes
\n
"
,
ext
->
buffer_length
);
if
(
!
hid_descriptor_begin
(
&
ext
->
desc
,
HID_USAGE_PAGE_GENERIC
,
HID_USAGE_GENERIC_GAMEPAD
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
2
,
HID_USAGE_PAGE_GENERIC
,
left_axis_usages
,
FALSE
,
16
,
0
,
0xffff
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
2
,
HID_USAGE_PAGE_GENERIC
,
right_axis_usages
,
FALSE
,
16
,
0
,
0xffff
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
2
,
HID_USAGE_PAGE_GENERIC
,
trigger_axis_usages
,
FALSE
,
16
,
0
,
0x7fff
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
hid_descriptor_add_buttons
(
&
ext
->
desc
,
HID_USAGE_PAGE_BUTTON
,
1
,
CONTROLLER_NUM_BUTTONS
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
hid_descriptor_add_hatswitch
(
&
ext
->
desc
,
1
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
BUTTON_BIT_COUNT
%
8
!=
0
)
{
/* unused bits between hatswitch and following constant */
if
(
!
hid_descriptor_add_padding
(
&
ext
->
desc
,
8
-
(
BUTTON_BIT_COUNT
%
8
)))
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
/* unknown constant */
if
(
!
hid_descriptor_add_padding
(
&
ext
->
desc
,
16
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
descriptor_add_haptic
(
ext
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
hid_descriptor_end
(
&
ext
->
desc
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
!
(
ext
->
report_buffer
=
HeapAlloc
(
GetProcessHeap
(),
HEAP_ZERO_MEMORY
,
ext
->
buffer_length
)))
goto
failed
;
...
...
@@ -463,12 +463,12 @@ static BOOL build_mapped_report_descriptor(struct platform_private *ext)
ext
->
report_buffer
[
14
]
=
0x89
;
ext
->
report_buffer
[
15
]
=
0xc5
;
return
TRUE
;
return
STATUS_SUCCESS
;
failed:
HeapFree
(
GetProcessHeap
(),
0
,
ext
->
report_buffer
);
hid_descriptor_free
(
&
ext
->
desc
);
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
static
void
free_device
(
DEVICE_OBJECT
*
device
)
...
...
@@ -791,7 +791,7 @@ static void try_add_device(unsigned int index)
if
(
device
)
{
BOOL
rc
;
NTSTATUS
status
;
struct
platform_private
*
private
=
impl_from_DEVICE_OBJECT
(
device
);
private
->
sdl_joystick
=
joystick
;
private
->
sdl_controller
=
controller
;
...
...
@@ -799,10 +799,10 @@ static void try_add_device(unsigned int index)
/* FIXME: We should probably move this to IRP_MN_START_DEVICE. */
if
(
controller
)
rc
=
build_mapped_report_descriptor
(
private
);
status
=
build_mapped_report_descriptor
(
private
);
else
rc
=
build_report_descriptor
(
private
);
if
(
!
rc
)
status
=
build_report_descriptor
(
private
);
if
(
status
)
{
ERR
(
"Building report descriptor failed, removing device
\n
"
);
bus_unlink_hid_device
(
device
);
...
...
dlls/winebus.sys/bus_udev.c
View file @
d3885f92
...
...
@@ -343,7 +343,7 @@ static INT count_abs_axis(int device_fd)
return
abs_count
;
}
static
BOOL
build_report_descriptor
(
struct
wine_input_private
*
ext
,
struct
udev_device
*
dev
)
static
NTSTATUS
build_report_descriptor
(
struct
wine_input_private
*
ext
,
struct
udev_device
*
dev
)
{
struct
input_absinfo
abs_info
[
HID_ABS_MAX
];
BYTE
absbits
[(
ABS_MAX
+
7
)
/
8
];
...
...
@@ -368,7 +368,7 @@ static BOOL build_report_descriptor(struct wine_input_private *ext, struct udev_
report_size
=
0
;
if
(
!
hid_descriptor_begin
(
&
ext
->
desc
,
device_usage
[
0
],
device_usage
[
1
]))
return
FALSE
;
return
STATUS_NO_MEMORY
;
abs_count
=
0
;
for
(
i
=
0
;
i
<
HID_ABS_MAX
;
i
++
)
...
...
@@ -381,7 +381,7 @@ static BOOL build_report_descriptor(struct wine_input_private *ext, struct udev_
if
(
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
1
,
usage
.
UsagePage
,
&
usage
.
Usage
,
FALSE
,
32
,
LE_DWORD
(
abs_info
[
i
].
minimum
),
LE_DWORD
(
abs_info
[
i
].
maximum
)))
return
FALSE
;
return
STATUS_NO_MEMORY
;
ext
->
abs_map
[
i
]
=
report_size
;
report_size
+=
4
;
...
...
@@ -397,7 +397,7 @@ static BOOL build_report_descriptor(struct wine_input_private *ext, struct udev_
if
(
!
hid_descriptor_add_axes
(
&
ext
->
desc
,
1
,
usage
.
UsagePage
,
&
usage
.
Usage
,
TRUE
,
8
,
0x81
,
0x7f
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
ext
->
rel_map
[
i
]
=
report_size
;
report_size
++
;
...
...
@@ -410,13 +410,13 @@ static BOOL build_report_descriptor(struct wine_input_private *ext, struct udev_
if
(
button_count
)
{
if
(
!
hid_descriptor_add_buttons
(
&
ext
->
desc
,
HID_USAGE_PAGE_BUTTON
,
1
,
button_count
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
if
(
button_count
%
8
)
{
BYTE
padding
=
8
-
(
button_count
%
8
);
if
(
!
hid_descriptor_add_padding
(
&
ext
->
desc
,
padding
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
report_size
+=
(
button_count
+
7
)
/
8
;
...
...
@@ -436,11 +436,11 @@ static BOOL build_report_descriptor(struct wine_input_private *ext, struct udev_
if
(
hat_count
)
{
if
(
!
hid_descriptor_add_hatswitch
(
&
ext
->
desc
,
hat_count
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
if
(
!
hid_descriptor_end
(
&
ext
->
desc
))
return
FALSE
;
return
STATUS_NO_MEMORY
;
TRACE
(
"Report will be %i bytes
\n
"
,
report_size
);
...
...
@@ -456,13 +456,13 @@ static BOOL build_report_descriptor(struct wine_input_private *ext, struct udev_
if
(
test_bit
(
absbits
,
i
))
set_abs_axis_value
(
ext
,
i
,
abs_info
[
i
].
value
);
return
TRUE
;
return
STATUS_SUCCESS
;
failed:
HeapFree
(
GetProcessHeap
(),
0
,
ext
->
current_report_buffer
);
HeapFree
(
GetProcessHeap
(),
0
,
ext
->
last_report_buffer
);
hid_descriptor_free
(
&
ext
->
desc
);
return
FALSE
;
return
STATUS_NO_MEMORY
;
}
static
BOOL
set_report_from_event
(
struct
wine_input_private
*
ext
,
struct
input_event
*
ie
)
...
...
@@ -1139,7 +1139,7 @@ static void try_add_device(struct udev_device *dev)
#ifdef HAS_PROPER_INPUT_HEADER
if
(
strcmp
(
subsystem
,
"input"
)
==
0
)
/* FIXME: We should probably move this to IRP_MN_START_DEVICE. */
if
(
!
build_report_descriptor
((
struct
wine_input_private
*
)
private
,
dev
))
if
(
build_report_descriptor
((
struct
wine_input_private
*
)
private
,
dev
))
{
ERR
(
"Building report descriptor failed, removing device
\n
"
);
close
(
fd
);
...
...
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