8072069: Toolkit.getScreenInsets() doesn't update if insets change
authoranashaty
Tue, 17 Feb 2015 19:56:15 +0300
changeset 29256 751f31639710
parent 29255 0989118f6e69
child 29257 550dfa936f27
8072069: Toolkit.getScreenInsets() doesn't update if insets change Reviewed-by: serb, azvegint
jdk/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java
--- a/jdk/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java	Mon Feb 16 20:01:17 2015 +0300
+++ b/jdk/src/java.desktop/macosx/classes/sun/awt/CGraphicsDevice.java	Tue Feb 17 19:56:15 2015 +0300
@@ -43,7 +43,6 @@
      * therefore methods, which is using this id should be ready to it.
      */
     private volatile int displayID;
-    private volatile Insets screenInsets;
     private volatile double xResolution;
     private volatile double yResolution;
     private volatile int scale;
@@ -120,7 +119,13 @@
     }
 
     public Insets getScreenInsets() {
-        return screenInsets;
+        // the insets are queried synchronously and are not cached
+        // since there are no Quartz or Cocoa means to receive notifications
+        // on insets changes (e.g. when the Dock is resized):
+        // the existing CGDisplayReconfigurationCallBack is not notified
+        // as well as the NSApplicationDidChangeScreenParametersNotification
+        // is fired on the Dock location changes only
+        return nativeGetScreenInsets(displayID);
     }
 
     public int getScaleFactor() {
@@ -135,7 +140,6 @@
     public void displayChanged() {
         xResolution = nativeGetXResolution(displayID);
         yResolution = nativeGetYResolution(displayID);
-        screenInsets = nativeGetScreenInsets(displayID);
         scale = (int) nativeGetScaleFactor(displayID);
         //TODO configs/fullscreenWindow/modes?
     }