Signed-off-by: Derek Lesho <dereklesho52(a)Gmail.com> --- v9: Make raw-mouse emulation all of nothing --- server/protocol.def | 5 +++-- server/queue.c | 14 ++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/server/protocol.def b/server/protocol.def index b5368c71f6..4ce9091661 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -310,8 +310,7 @@ typedef union /* TODO: fill this in if/when necessary */ } hid; } hw_rawinput_t; -#define RIM_ENABLE_NATIVE_MOUSE_MOVE 0x0800 -#define RIM_ENABLE_NATIVE_MOUSE_PRESS 0x1000 +#define RIM_ENABLE_NATIVE_MOUSE 0x0800 struct hardware_msg_data { @@ -367,6 +366,8 @@ typedef union } hw; } hw_input_t; +#define RIM_ENABLE_NATIVE_MOUSE_MOVE 0x0800 +#define RIM_ENABLE_NATIVE_MOUSE_PRESS 0x1000 typedef union { unsigned char bytes[1]; /* raw data for sent messages */ diff --git a/server/queue.c b/server/queue.c index 03e64341c1..fd830d2da1 100644 --- a/server/queue.c +++ b/server/queue.c @@ -1599,6 +1599,8 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa return 1; } +int emulate_raw_mouse = 1; + /* queue a hardware message for a mouse event */ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, const hw_input_t *input, unsigned int origin, struct msg_queue *sender ) @@ -1664,7 +1666,8 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons y = desktop->cursor.y; } - if ((device = current->process->rawinput_mouse)) + device = current->process->rawinput_mouse; + if (device && emulate_raw_mouse) { if (!(msg = alloc_hardware_message( input->mouse.info, source, time ))) return 0; msg_data = msg->data; @@ -1713,11 +1716,11 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons } queue_hardware_message( desktop, msg, 0 ); - - if (device->flags & RIDEV_NOLEGACY) - return FALSE; } + if (device && device->flags & RIDEV_NOLEGACY) + return FALSE; + for (i = 0; i < ARRAY_SIZE( messages ); i++) { if (!messages[i]) continue; @@ -2466,6 +2469,9 @@ DECL_HANDLER(send_rawinput_message) queue_hardware_message( desktop, msg, 0 ); } break; + case RIM_ENABLE_NATIVE_MOUSE_MOVE: + emulate_raw_mouse = 0; + break; default: set_error( STATUS_INVALID_PARAMETER ); } -- 2.22.0