Add support for VMware LED status
diff --git a/common/rfb/SMsgWriter.cxx b/common/rfb/SMsgWriter.cxx
index 2d59dde..6a2c2ba 100644
--- a/common/rfb/SMsgWriter.cxx
+++ b/common/rfb/SMsgWriter.cxx
@@ -153,7 +153,8 @@
void SMsgWriter::writeLEDState()
{
- if (!client->supportsEncoding(pseudoEncodingLEDState))
+ if (!client->supportsEncoding(pseudoEncodingLEDState) &&
+ !client->supportsEncoding(pseudoEncodingVMwareLEDState))
throw Exception("Client does not support LED state");
if (client->ledState() == ledUnknown)
throw Exception("Server has not specified LED state");
@@ -532,7 +533,8 @@
void SMsgWriter::writeLEDStateRect(rdr::U8 state)
{
- if (!client->supportsEncoding(pseudoEncodingLEDState))
+ if (!client->supportsEncoding(pseudoEncodingLEDState) &&
+ !client->supportsEncoding(pseudoEncodingVMwareLEDState))
throw Exception("Client does not support LED state updates");
if (client->ledState() == ledUnknown)
throw Exception("Server does not support LED state updates");
@@ -543,8 +545,13 @@
os->writeS16(0);
os->writeU16(0);
os->writeU16(0);
- os->writeU32(pseudoEncodingLEDState);
- os->writeU8(state);
+ if (client->supportsEncoding(pseudoEncodingLEDState)) {
+ os->writeU32(pseudoEncodingLEDState);
+ os->writeU8(state);
+ } else {
+ os->writeU32(pseudoEncodingVMwareLEDState);
+ os->writeU32(state);
+ }
}
void SMsgWriter::writeQEMUKeyEventRect()