changeset 518:c4d1a275b7d5

fx
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 22 Feb 2019 14:19:39 +0900
parents 8401dbe0d583
children d17c048f356f
files src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/jp/ac/u_ryukyu/treevnc/MulticastQueue.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java
diffstat 3 files changed, 34 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Fri Feb 22 09:34:10 2019 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Fri Feb 22 14:19:39 2019 +0900
@@ -142,6 +142,12 @@
                         break;
                     default:
                         logger.severe("Unsupported server message. Id = " + messageId);
+                        for(int i = 0; (i < 20) && reader.available()>0; i++) {
+                            byte[] x = {0};
+                            reader.readBytes(x);
+                            System.out.print(" "+x[0]);
+                        }
+                        System.out.println();
                 }
             } catch (TransportException e) {
                 System.out.println(e.getMessage());
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/MulticastQueue.java	Fri Feb 22 09:34:10 2019 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MulticastQueue.java	Fri Feb 22 14:19:39 2019 +0900
@@ -1,6 +1,7 @@
 package jp.ac.u_ryukyu.treevnc;
 
 import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.util.concurrent.CountDownLatch;
 
 public class MulticastQueue<T>
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Fri Feb 22 09:34:10 2019 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Fri Feb 22 14:19:39 2019 +0900
@@ -719,7 +719,7 @@
                 b.limit(dataLen - headerLen);
                 bufs.add(b);
                 byte[] bytes1 = b.array();
-                int headerPos = 0; int len2 = b.limit();
+                int headerPos = 4; int len2 = b.limit();
                 System.out.println(" bytes: " + bytes1[headerPos + 20] + ", " + bytes1[headerPos + 21] + ", " + bytes1[headerPos + 22] + ", " + bytes1[headerPos + 23]);
                 System.out.println(" bytes: " + bytes1[len2 - 4] + ", " + bytes1[len2 - 3] + ", " + bytes1[len2 - 2] + ", " + bytes1[len2 - 1]);
             }
@@ -787,6 +787,7 @@
         c1rect.height = tiley;
         if (c1.remaining() < span || c1rect.x + c1rect.width + tilex >= rect.x + rect.width ) {
             deflater.deflate(c1, Deflater.FULL_FLUSH);
+            deflater.finish();
             c1.flip();
             System.out.println("multicastPut: " + c1rect + " length: " + (c1.remaining()-c1headerPos-header.limit()));
             try {
@@ -813,6 +814,29 @@
         c1rect.width += tilex;
     }
 
+    /**
+     * make and send frameBufferUpdateRectangle packet
+     * @param c1
+     * @param headerPos
+     * @param len2
+     * @param x
+     * @param y
+     * @param w
+     * @param h
+     * @throws InterruptedException
+     *
+     * [8]    sequence number (if used )
+     *  0  0      FRAMEBUFFEUPDATERRECTANGLE  < headerPos
+     *  1  0      padding
+     *  2  int16  count of frame
+     *  4  int16 x
+     *  6  int16 y
+     *  8  int16 w
+     * 10  int16 h
+     * 12  int32  encoding type
+     * 16  [int32]   datalen if zcompressed
+     * 20  compressedData
+     */
     private void writeUpdateRectangleWithHeader(ByteBuffer c1, int headerPos, int len2, int x, int y, int w, int h) throws InterruptedException {
         deflater.reset();
 
@@ -829,8 +853,9 @@
         } else
             multicastqueue.waitput(bufs);
         byte[] bytes = c1.array();
+        len2 = c1.remaining();
         System.out.println(" bytes: " + bytes[headerPos + 20] + ", " + bytes[headerPos + 21] + ", " + bytes[headerPos + 22] + ", " + bytes[headerPos + 23]);
-        System.out.println(" bytes: " + bytes[headerPos+ len2 - 4] + ", " + bytes[headerPos+len2 - 3] + ", " + bytes[headerPos+len2 - 2] + ", " + bytes[headerPos+len2 - 1]);
+        System.out.println(" bytes: " + bytes[len2 - 4] + ", " + bytes[len2 - 3] + ", " + bytes[len2 - 2] + ", " + bytes[len2 - 1]);
     }
 
     public LinkedList<ByteBuffer> createCheckDelayHeader(LinkedList<ByteBuffer> checkDelay, ByteBuffer header) {