# HG changeset patch # User oc # Date 1424769024 -32400 # Node ID 2b4251bd599671c9a11648541bea757d9d2d0bb0 # Parent 82825c322044435d0ff72cfa099bee720b0f7909 set next display size diff -r 82825c322044 -r 2b4251bd5996 .idea/gradle.xml --- a/.idea/gradle.xml Mon Feb 23 18:46:48 2015 +0900 +++ b/.idea/gradle.xml Tue Feb 24 18:10:24 2015 +0900 @@ -14,4 +14,5 @@ - \ No newline at end of file + + diff -r 82825c322044 -r 2b4251bd5996 .idea/libraries/Gradle__com_jcraft_jsch_0_1_50.xml --- a/.idea/libraries/Gradle__com_jcraft_jsch_0_1_50.xml Mon Feb 23 18:46:48 2015 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff -r 82825c322044 -r 2b4251bd5996 TreeVNC.iml --- a/TreeVNC.iml Mon Feb 23 18:46:48 2015 +0900 +++ b/TreeVNC.iml Tue Feb 24 18:10:24 2015 +0900 @@ -1,23 +1,24 @@ - + + - + - - + - \ No newline at end of file + + diff -r 82825c322044 -r 2b4251bd5996 src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java Mon Feb 23 18:46:48 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java Tue Feb 24 18:10:24 2015 +0900 @@ -21,20 +21,24 @@ private short id; private int frameSizeWidth; private int frameSizeHeight; + private int nextSingleWidth; + private int nextSingleHeight; private int port; - public ScreenChangeRequest(String adr, int port, short id, int width, int height) { + public ScreenChangeRequest(String adr, int port, short id, int width, int height, int nextSingleWidth, int nextSingleHeight) { this.bytes = adr; this.port = port; this.id = id; this.frameSizeWidth = width; this.frameSizeHeight = height; + this.nextSingleWidth = nextSingleWidth; + this.nextSingleHeight = nextSingleHeight; System.out.println("Client send change screen server request :" + adr); } @Override public void send(Writer writer) throws TransportException { - ByteBuffer out = ByteBuffer.allocate(bytes.length()+25); + ByteBuffer out = ByteBuffer.allocate(bytes.length()+25+8); out.order(ByteOrder.BIG_ENDIAN); out.put(SERVER_CHANGE_REQUEST); out.put((byte)0); // padding @@ -43,6 +47,8 @@ out.put(bytes.getBytes()); out.putInt(frameSizeWidth); out.putInt(frameSizeHeight); + out.putInt(nextSingleWidth); + out.putInt(nextSingleHeight); out.putInt(port); writer.write(out.array(), 0, out.position()); writer.flush(); diff -r 82825c322044 -r 2b4251bd5996 src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Mon Feb 23 18:46:48 2015 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/TreeRFBProto.java Tue Feb 24 18:10:24 2015 +0900 @@ -78,6 +78,8 @@ private byte[] originalInitData = null; private boolean childrenMulticast = true; + public int nextSingleWidth; + public int nextSingleHeight; public TreeRFBProto(boolean isTreeManager, ViewerInterface viewer) { rThread = new RequestScreenThread(this); @@ -212,9 +214,13 @@ String newHostName = new String(byteAddress, "UTF-8"); int frameSizeWidth = buf.getInt(); int frameSizeHeight = buf.getInt(); + int nextSingleWidth = buf.getInt(); + int nextSingleHeight = buf.getInt(); + setSingleDisplaySize(frameSizeWidth, frameSizeHeight); + setNextSingleDisplaySize(nextSingleWidth, nextSingleHeight); int port = buf.getInt(); System.out.println("Root server change request :" + newHostName + " : " + port); - changeVNCServer(viewer, newHostName, port, frameSizeWidth, frameSizeHeight, id); + changeVNCServer(viewer, newHostName, port, id); if (viewer != null) { viewer.setFitScreen(); } @@ -806,20 +812,11 @@ * @param vncProxyService * @param hostName * HostAddress - * @param width - * FrameWidth - * @param height - * FrameHeight * @param newVNCServerId */ - public void changeVNCServer(ViewerInterface vncProxyService, String hostName, int port, int width, int height, short newVNCServerId) + public void changeVNCServer(ViewerInterface vncProxyService, String hostName, int port, short newVNCServerId) throws IOException { - this.frameSizeWidth = width; - this.frameSizeHeight = height; - singleWidth = frameSizeWidth; - singleHeight = frameSizeHeight; - if (newVNCServerId == -1) { // change to the tree vnc root on other network. // send whereToConnect. @@ -934,6 +931,11 @@ this.singleHeight = singleHeight; } + public void setNextSingleDisplaySize(int singleWidth, int singleHeight) { + this.nextSingleWidth = singleWidth; + this.nextSingleWidth = singleHeight; + } + public int getSingleWidth() { return singleWidth; } diff -r 82825c322044 -r 2b4251bd5996 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Mon Feb 23 18:46:48 2015 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Tue Feb 24 18:10:24 2015 +0900 @@ -854,17 +854,22 @@ public void actionPerformed(ActionEvent e) { viewer.setVisible(false); - float scaleFactor = getMyDisplayScaleFactor(); + ArrayList rectangles = viewer.getScreenRectangles(); int leftScreenNumber = 0; - int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor); - int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor); - viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); + int rightScreenNumber = 1; + int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth()); + int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight()); + int nextSingleWidth = (int) (rectangles.get(rightScreenNumber).getWidth()); + int nextSingleHeight = (int) (rectangles.get(rightScreenNumber).getHeight()); + if (viewer.getRfb().hasParent()) { String adr = viewer.getRfb().getMyAddress(); - context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, viewer.getRfb().getId(), singleWidth, singleHeight)); + context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, viewer.getRfb().getId(), singleWidth, singleHeight, nextSingleWidth, nextSingleHeight)); } if (viewer.getRfb().isTreeManager()) { + viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight); + viewer.getRfb().setNextSingleDisplaySize(nextSingleWidth, nextSingleHeight); changeVncServer(viewer, singleWidth, singleHeight, viewer.getRfb().getId()); return; } @@ -928,13 +933,6 @@ setButtonsBarVisible(true, container); } - private float getMyDisplayScaleFactor() { - final String CONTENT_SCALE_FACTOR = "java.awt.contentScaleFactor"; - Float scaleFactor = (Float) Toolkit.getDefaultToolkit().getDesktopProperty(CONTENT_SCALE_FACTOR); - - return scaleFactor == null ? 1.0f : scaleFactor; - } - public void fitScreen() { ArrayList rectangles = viewer.getScreenRectangles(); int leftScreenNumber = 0; @@ -1021,7 +1019,7 @@ private void changeVncServer(ViewerInterface viewer, int width, int height, short id) { String localhost = "127.0.0.1"; // InetAddress.getLocalHost().getHostName() try { - viewer.getRfb().changeVNCServer(viewer, localhost, ConnectionParams.DEFAULT_RFB_PORT, width, height, id); + viewer.getRfb().changeVNCServer(viewer, localhost, ConnectionParams.DEFAULT_RFB_PORT, id); } catch (Exception e1) { System.out.println("can't change server :" + e1.getMessage()); }