[PATCH 0/8] Implement cross-process rawinput messages support.

Rémi Bernon rbernon at codeweavers.com
Sun Jun 7 06:21:12 CDT 2020


Hi!

This is another attempt at upstreaming my rawinput patches.

I think there's a safer route, by first implementing the wineserver and
dinput8 parts, while still relying on the current winex11 code. As long
as a Wine window has input focus, the rawinput messages can be dispatch
correctly to the listening processes.

This series implements the missing rawinput support in wineserver, as
well as some flag support that dinput8 implementation will then use.

Then it should be possible to implement dinput8 on top of rawinput API,
and get rid of the low-level hooks there, which is the correct way to
do, and which should improve performance.

The tricky part is about listening to xinput2 rawevent globally, which
will solve the spurious mouse movements, but it will require first to
sort out or workaround some focus issues, so that events are only
dispatched when a Wine window has input focus. It can probably still
live in staging until an good solution is found.

Cheers,

Rémi Bernon (8):
  user32/tests: Add basic rawinput message tests.
  user32/tests: Add inter-thread rawinput message tests.
  user32/tests: Add inter-process rawinput message tests.
  server: Implement rawinput cross-process message dispatch.
  server: Split cursor position update to update_desktop_cursor_pos.
  server: Split cursor state update to update_desktop_mouse_state.
  server: Implement RegisterRawInputDevices RIDEV_NOLEGACY flag.
  server: Implement RegisterRawInputDevices RIDEV_INPUTSINK flag.

 dlls/user32/rawinput.c    |   9 +-
 dlls/user32/tests/input.c | 325 +++++++++++++++++++++++++++++++++++++-
 server/queue.c            | 200 +++++++++++++++++------
 3 files changed, 485 insertions(+), 49 deletions(-)

-- 
2.27.0




More information about the wine-devel mailing list