An extremely low latency KVMFR (KVM FrameRelay) implementation for guests with VGA PCI Passthrough.
Go to file
Quantum b0f9d2f713 [client] spice/wayland: improve cursor tracking logic
One of the major issues with the old tracking code is a data race
between the cursor thread updating g_cursor.guest and the
app_handleMouseBasic function. Specifically, the latter may have
sent mouse input via spice that has not been processed by the guest
and updated g_cursor.guest, but the guest may overwrite g_cursor.guest
to a previous state before the input is processed. This causes some
movements to be doubled. Eventually, the cursor positions will
synchronize, but this nevertheless causes a lot of jitter.

In this commit, we introduce a new field g_cursor.projected, which
is unambiguously the position of the cursor after taking into account
all the input already sent via spice. This is synced up to the guest
cursor upon entering the window and when the host restarts. Afterwards,
all mouse movements will be based on this position. This eliminates
all cursor jitter as far as I could tell.

Also, the cursor is now synced to the host position when exiting
capture mode.

A downside of this commit is that if the 1:1 movement patch is not
correctly applied, the cursor position would be wildly off instead
of simply jittering, but that is an unsupported configuration and
should not matter.

Also unsupported is when an application in guest moves the cursor
programmatically and bypassing spice. When using those applications,
capture mode must be on. Before this commit, we try to move the guest
cursor back to where it should be, but it's inherently fragile and
may lead to scenarios such as wild movements in first-person shooters.
2021-02-21 10:31:48 +11:00
.github [all] update discord link for issue template 2021-01-30 15:41:44 +11:00
client [client] spice/wayland: improve cursor tracking logic 2021-02-21 10:31:48 +11:00
common [client] all: move all SDL specific code into displayservers/sdl 2021-02-21 10:31:48 +11:00
contrib/redhat [meta] Add SELinux policy 2017-12-14 22:22:44 +11:00
host [host] nvfbc: avoid recreating mouse hook and 1x1 window 2021-01-31 12:17:14 +11:00
module [all] use explicit void parameter lists 2021-01-14 17:29:37 +11:00
obs [all] added new format version field to frame header 2020-10-12 18:52:37 +11:00
profile [all] use explicit void parameter lists 2021-01-14 17:29:37 +11:00
repos [spice] update the PureSpice submodule 2021-01-25 15:06:21 +11:00
resources [all] made a nicer icon, hopefully just a placeholder for now 2019-05-30 22:21:53 +10:00
vendor [c-host] windows: update ivshmem driver header and usage 2019-10-24 19:46:09 +11:00
.gitattributes [git] added vcxproj files to crlf exceptions 2017-10-31 20:19:52 +11:00
.gitignore [obs] implemented intial OBS Looking Glass Client plugin 2020-01-10 18:14:08 +11:00
.gitmodules [client] moved spice into a seperate repository 2020-01-31 21:39:57 +11:00
CONTRIBUTORS Fixed typo in word wish 2018-05-31 13:28:36 +10:00
LICENSE added licensing to sources 2017-10-31 19:07:16 +11:00
README.md [doc] Change Level1Techs link to Looking Glass forum 2021-02-02 08:42:54 +11:00
version.cmake [cmake] remove --long from version.cmake 2021-01-01 12:10:35 +11:00

Looking Glass

An extremely low latency KVMFR (KVM FrameRelay) implementation for guests with VGA PCI Passthrough.

Donations

I (Geoffrey McRae) am the primary developer behind this project and I have invested thousands of hours of development time into it.

If you like this project and find it useful and would like to help out you can support me directly using the following platforms.

Documentation

** IMPORTANT ** This project contains submodules that must be checked out if building from the git repository! If you are not a developer and just want to compile Looking Glass please download the source archive from the website instead:

https://looking-glass.io/downloads

Please also be sure to see the following files for more information Note: The README.md files are slowly being deprecated from this project in favor of the wiki at https://looking-glass.io/wiki, and as such the information in these files may be dated.

Latest Version

If you would like to use the latest bleeding edge version of Looking Glass please be aware there will be no support at this time.

Latest bleeding edge builds of the Windows host application can be obtained from:

https://looking-glass.io/downloads

Help and support

Web

https://forum.level1techs.com/c/software/lookingglass/142

Discord

IRC

Join us in the #LookingGlass channel on the FreeNode network

Trello