From 986280b382d57ef4f68d2d4afb13b26772e5acb0 Mon Sep 17 00:00:00 2001 From: Mike Looijmans Date: Thu, 11 Jan 2024 11:16:27 +0100 Subject: [PATCH] VNCSConnectionST: Release mouse button(s) on close When the connection is severed, release all mouse buttons. This fixes an issue with x0vncserver where the local display would stop responding to mouse events if the connection closes while the remote user was holding down a mouse button. To reproduce, start a VNC client, press and hold a mouse button and then kill the connection (e.g. close client, kill server, yank network cable). This caused the local screen to no longer respond to any mouse-down events until a VNC client reconnects and clicks anywhere. This may inject a "mouse release" event while closing, however, if you click on your screen and then yank the mouse cable, a mouse release event also would not come unexpectedly, so the cure's side effects aren't as bad as the disease. Signed-off-by: Mike Looijmans --- common/rfb/VNCSConnectionST.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx index 3137dd93..906f5f66 100644 --- a/common/rfb/VNCSConnectionST.cxx +++ b/common/rfb/VNCSConnectionST.cxx @@ -82,6 +82,9 @@ VNCSConnectionST::~VNCSConnectionST() vlog.info("closing %s: %s", peerEndpoint.c_str(), closeReason.c_str()); + // Release any mouse buttons + server->pointerEvent(this, server->getCursorPos(), 0); + // Release any keys the client still had pressed while (!pressedKeys.empty()) { uint32_t keysym, keycode; -- 2.39.5