# HG changeset patch # User Shinji KONO # Date 1466332540 -32400 # Node ID aa3822daf75a1c787b1fdd3a77a9181e30cd4367 # Parent d5bcae14c2cd297be6559bd5ce2da926862cec3d reintroduce retina code (send retina scaled screen size on Screen Change Request) diff -r d5bcae14c2cd -r aa3822daf75a src/main/java/com/glavsoft/rfb/client/FramebufferUpdateRequestMessage.java --- a/src/main/java/com/glavsoft/rfb/client/FramebufferUpdateRequestMessage.java Sun Jun 19 17:53:13 2016 +0900 +++ b/src/main/java/com/glavsoft/rfb/client/FramebufferUpdateRequestMessage.java Sun Jun 19 19:35:40 2016 +0900 @@ -46,6 +46,7 @@ this.width = width; this.height = height; this.sendFullScreenFlag = fullScreen; + System.out.println(this); // sendFullScreenRequest(); } diff -r d5bcae14c2cd -r aa3822daf75a src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Sun Jun 19 17:53:13 2016 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Sun Jun 19 19:35:40 2016 +0900 @@ -928,13 +928,13 @@ showScreenInfo("request screen change",0, x,y,singleWidth,singleHeight,scale); if (viewer.getRfb().isTreeManager()) { - changeVncServer(viewer, x, y, singleWidth, singleHeight, scale, viewer.getRfb().getId()); + changeVncServer(viewer, x, y, singleWidth*scale, singleHeight*scale, scale, viewer.getRfb().getId()); } else if (viewer.getRfb().hasParent()) { String adr = viewer.getRfb().getMyAddress(); if (scanPort(adr, ConnectionParams.DEFAULT_RFB_PORT)) { // -1 means request to reverse direct connection socket short id = viewer.getRfb().isTreeManager()? (short)-1 : viewer.getRfb().getId(); - context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, x, y, singleWidth, singleHeight, scale)); + context.sendMessage(new ScreenChangeRequest(adr, ConnectionParams.DEFAULT_VNC_ROOT, id, x, y, singleWidth*scale, singleHeight*scale, scale)); } } } @@ -990,19 +990,21 @@ } int thisScreenWidth = (int) rectangles.get(thisScreenNumber).getWidth(); int thisScreenHeight = (int) rectangles.get(thisScreenNumber).getHeight(); - // int thisRetinaScale = retinaScale(thisScreenNumber); + int thisRetinaScale = retinaScale(thisScreenNumber); final int thatScreenX = presenter.getX(); final int thatScreenY = presenter.getY(); - // int thatRetinaScale = presenter.getRetinaScale(); + int thatRetinaScale = presenter.getRetinaScale(); final int thatScreenWidth = viewer.getRfb().getSingleWidth(); final int thatScreenHeight = viewer.getRfb().getSingleHeight(); - showScreenInfo("that", 0, thatScreenX, thatScreenY, thatScreenWidth, thatScreenHeight, 1); + showScreenInfo("that", 0, thatScreenX, thatScreenY, thatScreenWidth, thatScreenHeight, thatRetinaScale); + System.out.println("that FB x:" + presenter.getFrameSizeWidth() + " y:" + presenter.getFrameSizeHeight()); frame.setSize(thisScreenWidth, thisScreenHeight); double scale = uiSettings.fitScreen(thisScreenWidth, thisScreenHeight, thatScreenWidth, thatScreenHeight); // final Rectangle visible = new Rectangle((int)(thatScreenX*scale),(int)(thatScreenY*scale),(int)(thatScreenWidth*scale)-1,(int)(thatScreenHeight*scale)-1); - showScreenInfo("this", thisScreenNumber, 0, 0,thisScreenWidth, thisScreenHeight, 1); + showScreenInfo("this", thisScreenNumber, 0, 0,thisScreenWidth, thisScreenHeight, thisRetinaScale); + System.out.println("this FB x:" + viewer.getConnectionPresenter().getFrameSizeWidth() + " y:" + viewer.getConnectionPresenter().getFrameSizeHeight()); System.out.println("thisScrollScale: " + scale); final int scrollx = (int)(thatScreenX * scale); final int scrolly = (thatScreenY!=0) ? (int)((thatScreenHeight - thatScreenY) * scale) : 0;