# HG changeset patch # User mir3636 # Date 1470225516 -32400 # Node ID c1b4befc59339f38d5a324d74f3942ed2984d479 # Parent f7210f8344037b01e32225d9568f3d00d922847e add sharingId diff -r f7210f834403 -r c1b4befc5933 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- 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() { diff -r f7210f834403 -r c1b4befc5933 src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- 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 diff -r f7210f834403 -r c1b4befc5933 src/main/java/jp/ac/u_ryukyu/treevnc/TreeVNCNode.java --- 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) {