[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
changes...
...jim
More information about the openjfx-dev
mailing list