Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Show a server-side mouse cursor to clients that don't control it, fix multiple clients drawing cursors into framebuffer #576

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

VelorumS
Copy link

From TurboVNC.

When multiple viewers are sharing a single TurboVNC session, ordinarily it would be necessary for a viewer to disable remote cursor shape updates in order to see the pointer movements initiated by other viewers. This commit automates that by using server-side cursor rendering (drawing the cursor into the framebuffer, not using remote cursor shape updates) to send cursor updates to all viewers that aren't moving the pointer ("collaborators.") The viewer that is moving the pointer (the "pointer owner") receives remote cursor shape updates while it is moving the pointer, if it has elected to receive them.

This mimics the behavior of RealVNC.

Also fixes the case when multiple clients draw the cursor into framebuffer simultaneously. Uses rwlock for pthreads or a simple mutex otherwise. If the multi-client performance is important then maybe any locks there aren't the best solution.

Volodymyr Samokhatko added 3 commits April 21, 2023 10:42
When multiple viewers are sharing a single TurboVNC session, ordinarily
it would be necessary for a viewer to disable remote cursor shape
updates in order to see the pointer movements initiated by other
viewers.  This commit automates that by using server-side cursor
rendering (drawing the cursor into the framebuffer, not using remote
cursor shape updates) to send cursor updates to all viewers that aren't
moving the pointer ("collaborators.")  The viewer that is moving the
pointer (the "pointer owner") receives remote cursor shape updates while
it is moving the pointer, if it has elected to receive them.

This mimics the behavior of RealVNC.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant