changeset 122:e2416a246c95

noScreenChange flag on command line ( should be on panel also )
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 26 May 2014 20:03:16 +0900
parents e4408fc5679f
children 233e94a7b5ed
files src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java
diffstat 2 files changed, 21 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Mon May 26 19:47:09 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Mon May 26 20:03:16 2014 +0900
@@ -44,14 +44,13 @@
 	private long counter = 0; // packet serial number
 	private VncProxyService viewer = null;
     public ServerSocket servSock;
-
+    private boolean permitChangeScreen = false;
     private static final int INFLATE_BUFSIZE = 1024 * 100;
 
     private Inflater inflater = new Inflater();
     private Deflater deflater = new Deflater();
 
 
-	
 	public MyRfbProto() {
 		rThread = new RequestScreenThread(this);
 	}
@@ -117,9 +116,7 @@
 		 * send all incoming from clients to parent.
 		 */
 		final Runnable reader = new Runnable() {
-
-
-			public void run() {
+            public void run() {
 				for (;;) {
 					try {
 		                final byte b[] = new byte[4096];
@@ -170,9 +167,6 @@
 				}
 			}
 
-			private boolean permitChangeScreen() {
-				return true;
-			}
 		};
 		/**
 		 * send packets to a client
@@ -243,6 +237,16 @@
 
 	}
 	
+
+    public boolean permitChangeScreen() {
+        return permitChangeScreen;
+    }
+    
+
+    public void setPermitChangeScreen(boolean v) {
+         permitChangeScreen = v;
+    }
+    
 	public void requestThreadNotify() {
 		rThread.reStart();
 	}
--- a/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Mon May 26 19:47:09 2014 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/TreeViewer.java	Mon May 26 20:03:16 2014 +0900
@@ -10,6 +10,7 @@
 	private int height;
 	private String hostName = null;
 	private boolean noConnection = false;
+    private boolean permitChangeScreen = true;
 
 	public static void main(String[] args) {
 		new TreeViewer().vncStart(args);
@@ -21,6 +22,7 @@
 	        VncProxyService vps = new VncProxyService();
 	        vps.setNoConnection(noConnection);
 	        vps.proxyStart(args,width,height);
+	        if (!permitChangeScreen ) vps.getRfb().setPermitChangeScreen(false);
 	    }
 	    ViewerImpl v;
 	    if (viewer) {
@@ -57,7 +59,11 @@
 			} else if ("--version".equals(args[i])) {
 				System.out.println("version :" + VncProxyService.ver());
 				System.exit(0);
-			} else if ("--retina".equals(args[i])) {
+            } else if ("-ns".equals(args[i])) {
+                permitChangeScreen = false;
+            } else if ("--noScreenChange".equals(args[i])) {
+                permitChangeScreen = false;
+            } else if ("--retina".equals(args[i])) {
 				// retina display too large for TreeVNC.
 				// restrict display size.
 				width = 1280;
@@ -73,7 +79,8 @@
 			} else {
 				System.out.println("(default) TreeVNCClient\n"
 						+ "-v or -c:         View shared screen.\n"
-						+ "-p:               Share my screen and behave as tree root.\n"
+						+ "-p:               (proxy) Share my screen and behave as tree root.\n"
+                        + "-ns --noScreenChange     Viewers cannot change screen to thiers (default permite screen change)"  
 						+ "-d:               Show shared screen and behave as tree root.\n"
 						+ "-r:               Connect to fix to specified host and port.\n"
 						+ "--host hostname:  Set host name.\n"