vnc: add alpha cursor support

There is a new vnc extension for cursors with an alpha channel.  Use
it if supported by the vnc client, prefer it over the "rich cursor"
extension which supports only a bitmask for transparency.

This is a visible improvement especially on modern desktops which
actually use the alpha channel when defining cursors.

https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#cursor-with-alpha-pseudo-encoding

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Tested-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20201208115737.18581-7-kraxel@redhat.com
This commit is contained in:
Gerd Hoffmann 2020-12-08 12:57:34 +01:00
parent a7d83e4359
commit 074a86d0b3
2 changed files with 20 additions and 3 deletions

View file

@ -448,6 +448,7 @@ enum VncFeatures {
VNC_FEATURE_TIGHT,
VNC_FEATURE_ZLIB,
VNC_FEATURE_RICH_CURSOR,
VNC_FEATURE_ALPHA_CURSOR,
VNC_FEATURE_TIGHT_PNG,
VNC_FEATURE_ZRLE,
VNC_FEATURE_ZYWRLE,
@ -461,6 +462,7 @@ enum VncFeatures {
#define VNC_FEATURE_TIGHT_MASK (1 << VNC_FEATURE_TIGHT)
#define VNC_FEATURE_ZLIB_MASK (1 << VNC_FEATURE_ZLIB)
#define VNC_FEATURE_RICH_CURSOR_MASK (1 << VNC_FEATURE_RICH_CURSOR)
#define VNC_FEATURE_ALPHA_CURSOR_MASK (1 << VNC_FEATURE_ALPHA_CURSOR)
#define VNC_FEATURE_TIGHT_PNG_MASK (1 << VNC_FEATURE_TIGHT_PNG)
#define VNC_FEATURE_ZRLE_MASK (1 << VNC_FEATURE_ZRLE)
#define VNC_FEATURE_ZYWRLE_MASK (1 << VNC_FEATURE_ZYWRLE)