changeset 96:76e49dd9c9c5

Client resize without reconnection
author oc
date Thu, 22 May 2014 17:42:31 +0900
parents c1c009a06c2e
children 44f5cdc63a76
files Todo.txt src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java
diffstat 5 files changed, 54 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/Todo.txt	Mon May 19 21:36:54 2014 +0900
+++ b/Todo.txt	Thu May 22 17:42:31 2014 +0900
@@ -1,3 +1,15 @@
+Wed May 22 16:14:25 JST 2014
+
+1) 10001, 10002 における固定Portをなくす 
+2)木を上に登る通信
+3)ClientをCloseしないでresizeする
+
+Update rectangle で desktop size を変更可能
+このままで、pixel formateが変更されない
+なのでserverrinit をもう一度送るのがよいのではないか
+
+4)display modeでClient view(proxy + view)をあげる
+
 Wed Aug 29 23:32:36 JST 2012
 
   ReceiverTask の framebufferUpdateMessage を、TreeTask に再現しないとだめ。
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Mon May 19 21:36:54 2014 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu May 22 17:42:31 2014 +0900
@@ -212,7 +212,6 @@
 		reader.readByte(); // padding
 		int numberOfRectangles = reader.readUInt16();
 		while (numberOfRectangles-- > 0) {
-			//FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle();
 			FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle();
 			rect.fill(reader);
 
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Mon May 19 21:36:54 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java	Thu May 22 17:42:31 2014 +0900
@@ -12,6 +12,7 @@
 import jp.ac.u_ryukyu.treevnc.server.VncProxyService;
 
 import com.glavsoft.exceptions.TransportException;
+import com.glavsoft.rfb.encoding.EncodingType;
 import com.glavsoft.rfb.protocol.Protocol;
 import com.glavsoft.rfb.protocol.ProtocolContext;
 import com.glavsoft.transport.Reader;
@@ -412,5 +413,14 @@
 			wait();
 		}
 	}
+
+
+	public void sendDesktopSizeChange() {
+		LinkedList<ByteBuffer> desktopSize = new LinkedList<ByteBuffer>();
+		int width = 0;
+		int height = 0;
+		desktopSize.add(new UpdateRectangleMessage(0,0, width , height, EncodingType.DESKTOP_SIZE).getMessage());
+		multicastqueue.put(desktopSize);
+	}
 	
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java	Thu May 22 17:42:31 2014 +0900
@@ -0,0 +1,31 @@
+package jp.ac.u_ryukyu.treevnc;
+
+import java.nio.ByteBuffer;
+
+import com.glavsoft.rfb.encoding.EncodingType;
+
+public class UpdateRectangleMessage {
+
+	private ByteBuffer msg = ByteBuffer.allocate(16);
+
+	public UpdateRectangleMessage(int i, int j, int width, int height,
+			EncodingType desktopSize) {
+		msg.put((byte) 0); // FrameBufferUpdate
+		msg.put((byte) 0); // padding
+		msg.putInt(1); // number of rectangle
+		msg.putInt(0);
+		msg.putInt(0);
+		msg.putInt(i);
+		msg.putInt(j);
+		msg.putInt(desktopSize.getId());
+		
+		msg.flip();
+
+	}
+	
+	public ByteBuffer getMessge(){
+		return msg;
+	}
+
+	
+}
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Mon May 19 21:36:54 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java	Thu May 22 17:42:31 2014 +0900
@@ -258,7 +258,7 @@
 	
 	public void orderRecconection(VncProxyService vps,String hostName) throws UnknownHostException, IOException, InterruptedException {
 		vps.myRfb.waitForReady(this);
-		vps.sendReconnection(clients.getList(), hostName, String.valueOf(vps.opendPort));
+		vps.myRfb.sendDesktopSizeChange();
 	}
 
 	public  LinkedList<String> clientList() {