# HG changeset patch # User oc # Date 1412587057 -32400 # Node ID 5eb8aa65f387d43829e00b52b92c3401a180b079 # Parent 358484c9d4a38e192c08c7e02d3dd7b7ecc10d0e fix checkdelay number-of-rectangle, and send checkdelay to lower node. diff -r 358484c9d4a3 -r 5eb8aa65f387 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Mon Oct 06 12:02:56 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java Mon Oct 06 18:17:37 2014 +0900 @@ -219,10 +219,6 @@ reader.readByte(); // padding int numberOfRectangles = reader.readUInt16(); - if (numberOfRectangles == 1234) { - System.out.println("1~~~~~~~~"); - } - while (numberOfRectangles-- > 0) { FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(); rect.fill(reader); @@ -269,6 +265,9 @@ // repaintController.repaintCursor(); } else if (rect.getEncodingType() == EncodingType.CHECK_DELAY) { readCheckDelay(reader); + int length = reader.readInt32(); + reader.reset(); + rfb.readSendData(length + 24, reader, null); System.out.println("rect.time=" + rect.time); } else throw new CommonException("Unprocessed encoding: " + rect.toString()); diff -r 358484c9d4a3 -r 5eb8aa65f387 src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Mon Oct 06 12:02:56 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Mon Oct 06 18:17:37 2014 +0900 @@ -62,6 +62,7 @@ private TreeVncRootSelectionPanel rootSelectionPanel; private boolean isTreeManager; private String vncInterface; + private int i; public TreeRFBProto(boolean isTreeManager) { rThread = new RequestScreenThread(this); @@ -541,17 +542,19 @@ header.limit(16); if (header.get(0) == FramebufferUpdate) { int encoding = header.getInt(12); - - LinkedList checkdelay = new LinkedList(); - long time = System.currentTimeMillis(); -// System.out.println("time =" + time); - checkdelay.add(new UpdateRectangleMessage(0, 0, 0, 0, time, EncodingType.CHECK_DELAY).getMessage()); - this.addSerialNumber(checkdelay); - multicastqueue.put(checkdelay); - + + + if (i%20 == 0) { + LinkedList checkdelay = new LinkedList(); + long time = System.currentTimeMillis(); + checkdelay.add(new UpdateRectangleMessage(0, 0, 0, 0, time, EncodingType.CHECK_DELAY).getMessage()); + this.addSerialNumber(checkdelay); + multicastqueue.put(checkdelay); + } i++; + if (encoding == EncodingType.ZRLE.getId() - || encoding == EncodingType.ZLIB.getId()) { + || encoding == EncodingType.ZLIB.getId()) { // recompress into ZREE // uncompressed result is remain in bytes ByteBuffer len = multicastqueue.allocate(4); @@ -589,6 +592,8 @@ } return; } + + // ZRLEE is already compressed bufs.add(header); if (dataLen > 16) { diff -r 358484c9d4a3 -r 5eb8aa65f387 src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java Mon Oct 06 12:02:56 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/UpdateRectangleMessage.java Mon Oct 06 18:17:37 2014 +0900 @@ -15,7 +15,7 @@ msg = ByteBuffer.allocate(24).order(ByteOrder.BIG_ENDIAN); msg.put((byte) 0); // FrameBufferUpdate msg.put((byte) 0); // padding - msg.putShort((short) 1234); // number of rectangle + msg.putShort((short) 1); // number of rectangle msg.putShort((short) i); msg.putShort((short) j); msg.putShort((short) width);