File openjfx-getdefaultscale.patch of Package java-1_8_0-openjdk-openjfx

--- rt-8u141-b14/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java	2017-06-13 18:28:39.000000000 +0200
+++ rt-8u141-b14/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java	2017-09-21 09:12:48.001195627 +0200
@@ -79,6 +79,7 @@
 import sun.awt.CausedFocusEvent;
 import sun.awt.SunToolkit;
 import sun.java2d.SunGraphics2D;
+import sun.java2d.SurfaceData;
 import sun.util.logging.PlatformLogger;
 import sun.util.logging.PlatformLogger.Level;
 
@@ -647,6 +648,23 @@
                 e.getCaret().getInsertionIndex());
     }
 
+    // FIXME: once we move to JDK 9 as the boot JDK we should remove the
+    // reflection code from this method, consider changing it to
+    // use double rather than int, and account for the possibility of
+    // a different scale factor in X and Y.
+    private int getDefaultScale(SurfaceData surfaceData) {
+        /*
+        double scale = surfaceData.getDefaultScaleX();
+        */
+        double scale = 1;
+        try {
+            Method meth = SurfaceData.class.getMethod("getDefaultScaleX");
+            scale = (Double)meth.invoke(surfaceData);
+        } catch (Exception ex) {
+        }
+
+        return (int)Math.round(scale);
+    }
 
     /**
      * Overrides the {@link javax.swing.JComponent#paintComponent(Graphics)}
@@ -686,7 +704,7 @@
 
             int newScaleFactor = scaleFactor;
             if (g instanceof SunGraphics2D) {
-                newScaleFactor = ((SunGraphics2D)g).surfaceData.getDefaultScale();
+                newScaleFactor = getDefaultScale(((SunGraphics2D)g).surfaceData);
             }
             if (scaleFactor != newScaleFactor) {
                 resizePixelBuffer(newScaleFactor);