Hello,
Could you review a fix for jdk9, please?
bug: https://bugs.openjdk.java.net/browse/JDK-8176490
webrev: http://cr.openjdk.java.net/~dmarkov/8176490/webrev.00/
Problem description:
On OSX AppKit thread and EDT or main application thread might be blocked when a
child window is displayed and its parent is hidden at the same time. AppKit
thread performs windows ordering caused by displaying of the child window. It
retrieves child windows for the parent window and tries to acquire the monitor
inside Window.getOwnedWindows_NoClientCode(). However the monitor is already
owned by EDT/main application thread which executes setVisible(false) on the
parent window. That thread hangs on invocation of CWrapper.NSWindow.isZoomed()
since the function must be executed on AppKit thread.
Fix:
Add a new field isZoomed to CPlatformWindow class. The field will contain
information about current zoom state for the window. The method
deliverMoveResizeEvent() will update the new field using data from the
platform. The invocations of CWrapper.NSWindow.isZoomed() in CPlatformWindow
should be replaced with isZoomed field.
Note: I ran JCK tests on the build with fix and did not observe any new
problems.
Thanks,
Dmitry