Skip to content

Commit

Permalink
VNCSConnectionST: Release mouse button(s) on close
Browse files Browse the repository at this point in the history
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 <mike.looijmans@topic.nl>
  • Loading branch information
MikeLooijmans committed Jan 15, 2024
1 parent 7ad74d1 commit 986280b
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions common/rfb/VNCSConnectionST.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 986280b

Please sign in to comment.