changeset 471:c1b4befc5933

add sharingId
author mir3636
date Wed, 03 Aug 2016 20:58:36 +0900
parents f7210f834403
children 126b84644ca7
files src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNode.java
diffstat 3 files changed, 19 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Aug 03 19:09:11 2016 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Aug 03 20:58:36 2016 +0900
@@ -99,7 +99,8 @@
                 cp.setSingleHeight(context.getFbHeight());
             }
             renderer = repaintController.createRenderer(reader, context.getFbWidth(), context.getFbHeight(), context.getPixelFormat());
-            // System.out.println("ReceiverTask: FB x="+context.getFbWidth() + " y="+context.getFbHeight());
+            repaintController.setVisible(rfb.getId() != rfb.getSharingId());
+            System.out.println("ReceiverTask: FB x="+context.getFbWidth() + " y="+context.getFbHeight() + " myId=" + rfb.getId() + " SharingId=" + rfb.getSharingId() + " visible" + (rfb.getId() != rfb.getSharingId()));
         }
         if(rfb.isTreeManager()) {
             fullscreenFbUpdateIncrementalRequest = new FramebufferUpdateRequestMessage(cp.getX(), cp.getY(), cp.getSingleWidth(), cp.getSingleHeight(), false);
@@ -278,6 +279,7 @@
                     }
                     return;
                 } else if (rect.getEncodingType() == EncodingType.DESKTOP_SIZE) {
+                    System.out.println("DESKTOP_SIZE");
                     fullscreenFbUpdateIncrementalRequest = new FramebufferUpdateRequestMessage(rect.x, rect.y, rect.width, rect.height, false);
                     renderer = repaintController.createRenderer(reader, rect.width, rect.height, context.getPixelFormat());
                     if (rfb.hasViewer()){
@@ -307,8 +309,9 @@
                         // keep full frame buffer for multi screen
                         renderer = repaintController.createRenderer(reader, rect.width, rect.height, context.getPixelFormat());
                     }
+                    rfb.setSharingId(id);
                     repaintController.setVisible(id != rfb.getId());
-                    // System.out.println("got INIT_DATA: myID = " + rfb.getId() + " sharingID = " + id);
+                    System.out.println("got INIT_DATA: myID = " + rfb.getId() + " sharingID = " + id);
                     if (rfb.hasViewer()){
                         setScreenParameter(rect,singleWidth,singleHeight);
                     }
@@ -363,6 +366,7 @@
         cp.setSingleHeight(singleHeight);
         rfb.setConnectionPresenter(cp);
         v.setFitScreen();
+        repaintController.setVisible(rfb.getId() != rfb.getSharingId());
     }
 
     private void sendFrameBufferUpdateRequest() {
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Wed Aug 03 19:09:11 2016 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java	Wed Aug 03 20:58:36 2016 +0900
@@ -43,6 +43,7 @@
     private Deflater deflater = new Deflater();
     ViewerInterface viewer;
     private short id = 0;  // my tree node id ( = 0 in root ), -1 means no parent
+    private short sharingId = -1; // VNCServer's id. this is used control visivility
     private TreeVncCommandChannelListener acceptThread;
     private TreeRootFinderListener getCast;
     private CreateConnectionParam cp;
@@ -756,8 +757,8 @@
     }
 
     public int getNewNodeId () {
-        return uniqueNodeId++;
-    }
+        return ++uniqueNodeId;
+    } // 0 is reserved for root
 
     /**
      * change VNCServer is called when host change.
@@ -912,8 +913,16 @@
         multicastqueue.put(errorAnnounce);
     }
 
-
     public void setConnectionPresenter(ConnectionPresenter connectionPresenter) {
         this.connectionPresenter = connectionPresenter;
     }
+
+    public short getSharingId() {
+        return sharingId;
+    }
+
+    public void setSharingId(short sharingId) {
+        this.sharingId = sharingId;
+    }
+
 }
\ No newline at end of file
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNode.java	Wed Aug 03 19:09:11 2016 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNode.java	Wed Aug 03 20:58:36 2016 +0900
@@ -4,7 +4,7 @@
     String hostname;
     int port;
     int treeNum; //tree position
-    int id;      //unique node id in all trees
+    int id = 0;      //unique node id in all trees
     String localhostname;
 
     public TreeVNCNode(String hostname, int port, String localhostname) {