# HG changeset patch # User oc # Date 1400748151 -32400 # Node ID 76e49dd9c9c58d34e621a9f9d37225d074f36a99 # Parent c1c009a06c2ebbb9fbdb7dc66b8cf6d989206cef Client resize without reconnection diff -r c1c009a06c2e -r 76e49dd9c9c5 Todo.txt --- 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 に再現しないとだめ。 diff -r c1c009a06c2e -r 76e49dd9c9c5 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- 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); diff -r c1c009a06c2e -r 76e49dd9c9c5 src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- 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 desktopSize = new LinkedList(); + int width = 0; + int height = 0; + desktopSize.add(new UpdateRectangleMessage(0,0, width , height, EncodingType.DESKTOP_SIZE).getMessage()); + multicastqueue.put(desktopSize); + } } diff -r c1c009a06c2e -r 76e49dd9c9c5 src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java --- /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; + } + + +} diff -r c1c009a06c2e -r 76e49dd9c9c5 src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java --- 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 clientList() {