Commit 427168ba authored by Rémi Bernon's avatar Rémi Bernon Committed by Alexandre Julliard

server: Add process argument to find_rawinput_device.

And use it to find registered HID rawinput devices. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506Signed-off-by: 's avatarRémi Bernon <rbernon@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent c64f4548
...@@ -1489,11 +1489,11 @@ static user_handle_t find_hardware_message_window( struct desktop *desktop, stru ...@@ -1489,11 +1489,11 @@ static user_handle_t find_hardware_message_window( struct desktop *desktop, stru
return win; return win;
} }
static struct rawinput_device_entry *find_rawinput_device( unsigned short usage_page, unsigned short usage ) static struct rawinput_device_entry *find_rawinput_device( struct process *process, unsigned short usage_page, unsigned short usage )
{ {
struct rawinput_device_entry *e; struct rawinput_device_entry *e;
LIST_FOR_EACH_ENTRY( e, &current->process->rawinput_devices, struct rawinput_device_entry, entry ) LIST_FOR_EACH_ENTRY( e, &process->rawinput_devices, struct rawinput_device_entry, entry )
{ {
if (e->device.usage_page != usage_page || e->device.usage != usage) continue; if (e->device.usage_page != usage_page || e->device.usage != usage) continue;
return e; return e;
...@@ -1506,7 +1506,7 @@ static void update_rawinput_device(const struct rawinput_device *device) ...@@ -1506,7 +1506,7 @@ static void update_rawinput_device(const struct rawinput_device *device)
{ {
struct rawinput_device_entry *e; struct rawinput_device_entry *e;
if (!(e = find_rawinput_device( device->usage_page, device->usage ))) if (!(e = find_rawinput_device( current->process, device->usage_page, device->usage )))
{ {
if (!(e = mem_alloc( sizeof(*e) ))) return; if (!(e = mem_alloc( sizeof(*e) ))) return;
list_add_tail( &current->process->rawinput_devices, &e->entry ); list_add_tail( &current->process->rawinput_devices, &e->entry );
...@@ -1669,6 +1669,7 @@ struct rawinput_message ...@@ -1669,6 +1669,7 @@ struct rawinput_message
static int queue_rawinput_message( struct process* process, void *arg ) static int queue_rawinput_message( struct process* process, void *arg )
{ {
const struct rawinput_message* raw_msg = arg; const struct rawinput_message* raw_msg = arg;
const struct rawinput_device_entry *entry;
const struct rawinput_device *device = NULL; const struct rawinput_device *device = NULL;
struct desktop *target_desktop = NULL; struct desktop *target_desktop = NULL;
struct thread *target_thread = NULL; struct thread *target_thread = NULL;
...@@ -1679,6 +1680,8 @@ static int queue_rawinput_message( struct process* process, void *arg ) ...@@ -1679,6 +1680,8 @@ static int queue_rawinput_message( struct process* process, void *arg )
device = process->rawinput_mouse; device = process->rawinput_mouse;
else if (raw_msg->data.rawinput.type == RIM_TYPEKEYBOARD) else if (raw_msg->data.rawinput.type == RIM_TYPEKEYBOARD)
device = process->rawinput_kbd; device = process->rawinput_kbd;
else if ((entry = find_rawinput_device( process, raw_msg->data.rawinput.hid.usage_page, raw_msg->data.rawinput.hid.usage )))
device = &entry->device;
if (!device) return 0; if (!device) return 0;
if (process != raw_msg->foreground->process) if (process != raw_msg->foreground->process)
...@@ -3296,9 +3299,9 @@ DECL_HANDLER(update_rawinput_devices) ...@@ -3296,9 +3299,9 @@ DECL_HANDLER(update_rawinput_devices)
update_rawinput_device(&devices[i]); update_rawinput_device(&devices[i]);
} }
e = find_rawinput_device( 1, 2 ); e = find_rawinput_device( current->process, 1, 2 );
current->process->rawinput_mouse = e ? &e->device : NULL; current->process->rawinput_mouse = e ? &e->device : NULL;
e = find_rawinput_device( 1, 6 ); e = find_rawinput_device( current->process, 1, 6 );
current->process->rawinput_kbd = e ? &e->device : NULL; current->process->rawinput_kbd = e ? &e->device : NULL;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment