From: Piotr Caban Subject: [PATCH] server: Don't wait for low level hook result when queueing hardware message. Message-Id: Date: Tue, 14 Sep 2021 18:27:29 +0200 Without the change graphic drivers are blocking until low level hooks are processed when injecting keyboard and mouse events. That may cause deadlocks. Signed-off-by: Piotr Caban --- server/queue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/queue.c b/server/queue.c index e4903bcb79f..437d665fdab 100644 --- a/server/queue.c +++ b/server/queue.c @@ -1845,7 +1845,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons else if (!send_hook_ll_message( desktop, msg, input, NULL )) queue_hardware_message( desktop, msg, 0 ); } - return wait; + return origin != IMO_HARDWARE && wait; } /* queue a hardware message for a keyboard event */ @@ -1984,7 +1984,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c if (!(wait = send_hook_ll_message( desktop, msg, input, sender ))) queue_hardware_message( desktop, msg, 1 ); - return wait; + return origin != IMO_HARDWARE && wait; } /* queue a hardware message for a custom type of event */