[9] Review request for 8166856: OS X: dual screen rendering issue

Jim Graham james.graham at oracle.com
Tue Oct 25 15:26:21 UTC 2016

JBS: https://bugs.openjdk.java.net/browse/JDK-8166856
webrev: http://cr.openjdk.java.net/~flar/JDK-8166856/webrev.00/

Some analysis in the last 2 comments of the JBS, but the main fix is to 
not send bounds changes down to native when no change has happened from 
FX code.  The main culprit here was that they would be sent down when 
only a scale change had occurred.  Since scale changes occur during 
dragging across screens this could confuse the native code as to whether 
a window is in its transitional state due to a drag operation or due to 
a programmatic change (triggered by echoing back the bounds when the 
scale change occurs) - each of which might have their own heuristics 
relating to whether or not the scale is that of the first or second 
screens.  Now we only send the bounds down when they have changed.

I also break out the scale notifications on MacOS to only be sent when 
the OS determines them to be appropriate rather than when we think they 
have changed.  This keeps us in better sync with the native scale.

This should not affect 8 (but I'll test to be sure) because we didn't 
send scales up the chain to FX like we do on 9 so the only reason 8 
would have to try to send the bounds down is when they have actually 
changed from FX code.  It wasn't until scaling was added to the 
notification path in 9 that we started sending down false NOP bounds 


More information about the openjfx-dev mailing list