Rémi Bernon
d1789fbb40
server: Change desktop cursor only when inside the thread's windows.
...
Getting rid of the desktop cursor handle at the same time.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55961
2023-12-21 18:39:04 +01:00
Rémi Bernon
9dc80b13be
server: Introduce a new get_desktop_cursor_thread_input helper.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55961
2023-12-21 18:39:04 +01:00
Brendan McGrath
fa873804fb
server: Always release internal hardware messages.
2023-12-21 18:38:59 +01:00
Rémi Bernon
2e90c01696
server: Ignore the capture window wrt desktop cursor changes.
...
This partially reverts commit c3dcf1e269
.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55306
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56046
2023-12-18 22:14:57 +01:00
Rémi Bernon
bb496ea847
server: Always queue mouse messages delivered to another window.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55306
2023-12-18 22:14:57 +01:00
Rémi Bernon
c3dcf1e269
server: Use the capture window as cursor window if it is set.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55306
2023-12-15 21:10:17 +01:00
Rémi Bernon
82642e34e1
server: Update the desktop cursor position / window on click.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55306
2023-12-15 21:10:17 +01:00
Rémi Bernon
19ad5bd598
server: Peek wine internal driver messages regardless of filter.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55774
2023-12-13 19:13:01 +01:00
Rémi Bernon
2581e0b3ea
server: Send WM_WINE_SETCURSOR with the thread input cursor handle.
...
Which may be different from the last desktop cursor handle.
This makes the behavior better match the old winex11 behavior, which queried
the current thread input cursor handle on every mouse move to sync it with X11,
although it contradicts MSDN documentation which states that the cursor handle
is global.
This fixes the X11 cursor being visible in "Deus Ex: GOTY Edition".
2023-10-11 20:30:04 +02:00
Rémi Bernon
ab9b99c4a5
server: Pass set_cursor flags in WM_WINE_CLIPCURSOR wparam.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55047
2023-06-16 21:35:58 +02:00
Rémi Bernon
25906eedd8
server: Introduce and send new WM_WINE_SETCURSOR hardware message.
2023-06-13 22:10:56 +02:00
Rémi Bernon
b04ef19930
server: Keep track of the current desktop cursor handle.
2023-06-13 22:10:56 +02:00
Rémi Bernon
10f5ff7f06
server: Update desktop cursor window when cursor pos changes.
2023-06-13 22:10:56 +02:00
Rémi Bernon
6ac82b2a24
server: Use hardware message category when checking filter.
2023-06-12 21:21:41 +02:00
Rémi Bernon
3ae2dc4648
server: Pass the message code to get_hardware_msg_bit.
2023-06-12 21:21:41 +02:00
Rémi Bernon
5ebb1ed132
server: Queue a hardware WM_WINE_CLIPCURSOR message to the foreground thread.
...
When applying a new cursor clipping rect, or to the previous foreground
thread when foreground changes, to notify it of the cursor clipping rect
being reset.
2023-06-07 22:48:27 +02:00
Rémi Bernon
bd06c87b5b
server: Use a separate helper to merge WM_MOUSEMOVE messages.
2023-06-07 22:48:27 +02:00
Rémi Bernon
2101d4d6ad
server: Use the helper to reset the clip rect when the desktop size changes.
2023-06-07 22:48:27 +02:00
Rémi Bernon
88cbc08b7f
server: Don't reset cursor clipping on foreground thread exit.
...
It will be reset on foreground input changes, when it happens.
2023-06-02 21:08:34 +02:00
Rémi Bernon
900ba82654
win32u: Use WM_WINE_CLIPCURSOR / TRUE for empty clipping rect.
2023-05-31 22:50:10 +02:00
Rémi Bernon
8f9610fdff
server: Use get_hardware_msg_bit consistently to classify messages.
2023-05-31 21:19:35 +02:00
Rémi Bernon
26c6386de9
server: Move set_cursor desktop local variable to wider scope.
2023-05-30 12:25:25 +02:00
Rémi Bernon
61dbfea452
server: Assume the internal clip message to be WM_WINE_CLIPCURSOR.
2023-05-30 12:25:25 +02:00
Henry Goffin
0e85ac17a4
win32u: Invalidate all cached keys after input.
...
This patch addresses an issue in Second Life and potentially other
multi-threaded applications which process WM_KEYDOWN in one thread
and then verify that the key is "still down" with GetAsyncKeyState
from another thread. Wine uses a per-thread key cache, resulting
in inconsistent views of key status. Caches are now invalidated
when an input event is injected by the driver or via SendInput.
2023-03-02 10:20:01 +01:00
Aric Stewart
c937155ff6
server: Take into account extra_size in get_rawinput_buffer.
2022-11-17 21:51:42 +01:00
Rémi Bernon
9804210966
server: Remove no-op raw_msg.foreground release.
...
It's previously set to NULL and never updated.
2022-11-14 13:17:31 +01:00
Rémi Bernon
28aa321f36
server: Avoid reallocating rawinput device array with zero size.
...
It actually frees the pointer.
2022-08-08 18:50:54 +02:00
Rémi Bernon
a2395ecf96
server: Use the client provided rawinput registered device array.
2022-07-28 20:08:58 +02:00
Rémi Bernon
1587e9db88
win32u: Implement NtUserGetRegisteredRawInputDevices on the client side.
2022-07-28 20:08:58 +02:00
Rémi Bernon
c57eda2432
server: Avoid using pointer value after realloc.
...
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-06-15 11:57:08 +02:00
Rémi Bernon
68b6e876f0
server: Create message queue and thread input in get_key_state.
...
This removes the fallback to desktop async keystate and uses instead the
keystate synchronization logic in all cases.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26269
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27238
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31899
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35907
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45385
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-26 13:53:29 +02:00
Rémi Bernon
f076e5f854
server: Lock thread input keystate whenever it is modified.
...
And synchronize it with desktop async keystate, on GetKeyState calls,
if it is not locked yet.
Based on a patch from Sebastian Lackner <sebastian@fds-team.de>.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26269
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27238
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31899
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35907
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45385
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-26 13:53:26 +02:00
Rémi Bernon
ff74d5c244
server: Create message queue and thread input in set_key_state.
...
This marks one test case as todo, but it was an outlier, and the 'X' key
state is now wrong in all cases. Overall this makes the tests results
more coherent.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26269
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27238
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31899
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35907
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45385
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-04-26 13:53:18 +02:00
Rémi Bernon
095204a9f3
server: Return error when hardware message is too large.
...
So that the client allocates a larger receive buffer when needed and not
trigger the assert below when setting the reply message data.
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-12 17:27:50 +01:00
Ziqing Hui
77f1658393
server: Also queue hotkey message for WM_SYSKEYDOWN.
...
ALT and F10 key generate WM_SYSKEYDOWN message.
They should also have the ability to queue hotkey message.
Signed-off-by: Ziqing Hui <zhui@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-11-02 17:09:39 +01:00
Huw Davies
6fdae1979b
configure: Stop checking for poll.h and sys/poll.h - always use poll.h.
...
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-31 17:56:54 +01:00
Zebediah Figura
f393ab2636
server: Zero-initialize rawinput_message structures before passing them to queue_rawinput_message() (Valgrind).
...
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-13 13:05:23 +02:00
Alexandre Julliard
c954e5b9e6
server: Avoid using wine/port.h.
...
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-10-07 18:03:11 +02:00
Rémi Bernon
fc64aa7e7c
server: Send HID report data with the WM_INPUT messages.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:31:21 +02:00
Rémi Bernon
109de60873
server: Support variable sized hardware_msg_data allocation.
...
The RIM_TYPEHID messages will have to carry the variable length HID
report.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:30:49 +02:00
Rémi Bernon
1128a37e77
user32: Implement WM_INPUT / RIM_TYPEHID message dispatch.
...
Without any HID report data for now.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:30:41 +02:00
Rémi Bernon
e8498788e8
server: Add hardware_msg_data size for variable size messages.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-31 12:30:36 +02:00
Rémi Bernon
4e956dc0fe
server: Implement WM_INPUT_DEVICE_CHANGE message dispatch.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-11 21:51:46 +02:00
Rémi Bernon
3481dc05e9
server: Broadcast rawinput messages when desktop is NULL.
...
HID rawinput hardware messages are sent from winedevice.exe, which is
attached to the services desktop. We need to broadcast its messages to
all (interactive) desktops instead.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-11 21:51:44 +02:00
Rémi Bernon
371be0bc1c
server: Add support for RIDEV_DEVNOTIFY rawinput flag.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-11 21:51:42 +02:00
Rémi Bernon
2d8f98fd4e
server: Add an explicit message field in rawinput_message.
...
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-11 21:51:40 +02:00
Rémi Bernon
427168ba5a
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=50506
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-05-11 21:51:37 +02:00
Rémi Bernon
2fcc1d0ecd
server: Split the fallback to desktop async keystate.
...
When current thread doesn't have a message queue. It's going to be
removed later anyway.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26269
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27238
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31899
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35907
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45385
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-02 22:52:34 +02:00
Rémi Bernon
6444e4fade
server: Remove tid from set_key_state request.
...
As it is always set to GetCurrentThreadId().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26269
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27238
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31899
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35907
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45385
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-02 22:51:50 +02:00
Rémi Bernon
626870abe2
server: Remove tid from get_key_state request.
...
And replace it with an async param if we want the global async keystate.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=26269
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=27238
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=31899
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=35907
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45385
Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2021-04-02 22:51:21 +02:00