[Developement] Added ability to freeze video (enable/disabe rectangular screen area that treated as video) using tight rfb video freeze extension(if server support it).

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3474 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/java/src/com/tightvnc/vncviewer/RfbProto.java b/java/src/com/tightvnc/vncviewer/RfbProto.java
index 156b41a..9e6284f 100644
--- a/java/src/com/tightvnc/vncviewer/RfbProto.java
+++ b/java/src/com/tightvnc/vncviewer/RfbProto.java
@@ -100,6 +100,8 @@
   // Non-standard client-to-server messages
   final static int EnableContinuousUpdates = 150;
   final static int VideoRectangleSelection = 151;
+  final static int VideoFreeze = 152;
+  final static String SigVideoFreeze = "VD_FREEZ";
   final static String SigEnableContinuousUpdates = "CUC_ENCU";
   final static String SigVideoRectangleSelection = "VRECTSEL";
 
@@ -498,6 +500,9 @@
     clientMsgCaps.add(VideoRectangleSelection, TightVncVendor,
                       SigVideoRectangleSelection,
                       "Select a rectangle to be treated as video");
+    clientMsgCaps.add(VideoFreeze, TightVncVendor,
+                      SigVideoFreeze,
+                      "Disable/enable video rectangle");
 
     // Supported encoding types
     encodingCaps.add(EncodingCopyRect, StandardVendor,
@@ -1406,6 +1411,27 @@
     System.out.println("Video rectangle selection message sent");
   }
 
+  void trySendVideoFreeze(boolean freeze) throws IOException
+  {
+    if (!clientMsgCaps.isEnabled(VideoFreeze)) {
+      System.out.println("Video freeze is not supported by the server");
+      return;
+    }
+
+    byte[] b = new byte[2];
+    byte fb = 0;
+    if (freeze) {
+      fb = 1;
+    }
+
+    b[0] = (byte) VideoFreeze;
+    b[1] = (byte) fb;
+
+    os.write(b);
+
+    System.out.println("Video freeze selection message sent");
+  }
+
   public void startTiming() {
     timing = true;