changeset 346:89c41f9870ba

get singleDisplay size from retina display (HiDPI).
author oc
date Wed, 11 Feb 2015 21:52:14 +0900
parents 47e351909227
children 6f67d602b8e9
files src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java
diffstat 3 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java	Tue Feb 10 18:18:49 2015 +0900
+++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java	Wed Feb 11 21:52:14 2015 +0900
@@ -42,7 +42,7 @@
                 return;
             }
         }
-        rfb.readSendData(dataLen, reader, bytes, rect);
+            rfb.readSendData(dataLen, reader, bytes, rect);
     }
 
     private int getZrleLength(FramebufferUpdateRectangle rect, Reader reader)
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Tue Feb 10 18:18:49 2015 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Wed Feb 11 21:52:14 2015 +0900
@@ -292,6 +292,7 @@
                     throw new CommonException("Unprocessed encoding: " + rect.toString());
             }
         } catch (UnsupportedEncodingException e) {
+            e.getMessage();
             e.printStackTrace();
             reader.close();
         }
--- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java	Tue Feb 10 18:18:49 2015 +0900
+++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java	Wed Feb 11 21:52:14 2015 +0900
@@ -853,11 +853,14 @@
             @Override
             public void actionPerformed(ActionEvent e) {
                 viewer.setVisible(false);
+
+                float scaleFactor = getMyDisplayScaleFactor();
                 ArrayList<Rectangle> rectangles = viewer.getScreenRectangles();
                 int leftScreenNumber = 0;
-                int singleWidth = (int) rectangles.get(leftScreenNumber).getWidth();
-                int singleHeight = (int) rectangles.get(leftScreenNumber).getHeight();
+                int singleWidth = (int) (rectangles.get(leftScreenNumber).getWidth() * scaleFactor);
+                int singleHeight = (int) (rectangles.get(leftScreenNumber).getHeight() * scaleFactor);
                 viewer.getRfb().setSingleDisplaySize(singleWidth, singleHeight);
+
                 if (viewer.getRfb().isTreeManager()) {
                     if (viewer.getRfb().hasParent()) {
                         String adr = viewer.getRfb().getMyAddress();
@@ -927,7 +930,14 @@
 
         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<Rectangle> rectangles = viewer.getScreenRectangles();
         int leftScreenNumber = 0;