Fully implement support for alpha cursor pseudo encoding.
Alpha cursors are not supported in java on Windows so disable
it in that case. Ideally it would be nice to be able to test
whether or not the client OS supports it, but at the moment
MS Windows is the only one that I'm aware of that doesn't.
diff --git a/java/com/tigervnc/rfb/CMsgWriter.java b/java/com/tigervnc/rfb/CMsgWriter.java
index 7838da3..d99f26c 100644
--- a/java/com/tigervnc/rfb/CMsgWriter.java
+++ b/java/com/tigervnc/rfb/CMsgWriter.java
@@ -67,7 +67,8 @@
if (cp.supportsLocalCursor) {
encodings[nEncodings++] = Encodings.pseudoEncodingXCursor;
encodings[nEncodings++] = Encodings.pseudoEncodingCursor;
- encodings[nEncodings++] = Encodings.pseudoEncodingCursorWithAlpha;
+ if (cp.supportsLocalCursorWithAlpha)
+ encodings[nEncodings++] = Encodings.pseudoEncodingCursorWithAlpha;
}
if (cp.supportsDesktopResize)
encodings[nEncodings++] = Encodings.pseudoEncodingDesktopSize;
diff --git a/java/com/tigervnc/rfb/ConnParams.java b/java/com/tigervnc/rfb/ConnParams.java
index fe52770..ce3af71 100644
--- a/java/com/tigervnc/rfb/ConnParams.java
+++ b/java/com/tigervnc/rfb/ConnParams.java
@@ -39,6 +39,7 @@
majorVersion = 0; minorVersion = 0;
width = 0; height = 0; useCopyRect = false;
supportsLocalCursor = false; supportsLocalXCursor = false;
+ supportsLocalCursorWithAlpha = false;
supportsDesktopResize = false; supportsExtendedDesktopSize = false;
supportsDesktopRename = false; supportsLastRect = false;
supportsSetDesktopSize = false; supportsFence = false;
@@ -128,6 +129,7 @@
{
useCopyRect = false;
supportsLocalCursor = false;
+ supportsLocalCursorWithAlpha = false;
supportsDesktopResize = false;
supportsExtendedDesktopSize = false;
supportsLocalXCursor = false;
@@ -151,6 +153,9 @@
case Encodings.pseudoEncodingXCursor:
supportsLocalXCursor = true;
break;
+ case Encodings.pseudoEncodingCursorWithAlpha:
+ supportsLocalCursorWithAlpha = true;
+ break;
case Encodings.pseudoEncodingDesktopSize:
supportsDesktopResize = true;
break;
@@ -213,6 +218,7 @@
public boolean supportsLocalCursor;
public boolean supportsLocalXCursor;
+ public boolean supportsLocalCursorWithAlpha;
public boolean supportsDesktopResize;
public boolean supportsExtendedDesktopSize;
public boolean supportsDesktopRename;
diff --git a/java/com/tigervnc/vncviewer/CConn.java b/java/com/tigervnc/vncviewer/CConn.java
index c53f805..85bdcb6 100644
--- a/java/com/tigervnc/vncviewer/CConn.java
+++ b/java/com/tigervnc/vncviewer/CConn.java
@@ -104,6 +104,11 @@
currentEncoding = encNum;
cp.supportsLocalCursor = true;
+ if (VncViewer.os.contains("windows"))
+ // JRE on Windows does not support alpha cursor
+ cp.supportsLocalCursorWithAlpha = false;
+ else
+ cp.supportsLocalCursorWithAlpha = true;
cp.supportsDesktopResize = true;
cp.supportsExtendedDesktopSize = true;
diff --git a/java/com/tigervnc/vncviewer/VncViewer.java b/java/com/tigervnc/vncviewer/VncViewer.java
index cab1fc5..d6a3930 100644
--- a/java/com/tigervnc/vncviewer/VncViewer.java
+++ b/java/com/tigervnc/vncviewer/VncViewer.java
@@ -81,7 +81,7 @@
public static final InputStream timestamp =
VncViewer.class.getResourceAsStream("timestamp");
public static final String os =
- System.getProperty("os.name").toLowerCase();
+ System.getProperty("os.name").toLowerCase(Locale.ENGLISH);
private static VncViewer applet;
private String defaultServerName;