<AWT Dev> [9] Review request for 8176490: [macosx] Sometimes NSWindow.isZoomed hangs

Alexander Zvegintsev alexander.zvegintsev at oracle.com
Mon Mar 27 15:23:43 UTC 2017

Looks fine to me too.


On 27/03/2017 08:35, dmitry markov wrote:
> Thank you, Sergey!
> Looking for the second +1 from someone else.
> Thank you in advance,
> Dmitry
> On 24/03/2017 21:01, Sergey Bylokhov wrote:
>> Looks fine.
>>> Hi Sergey,
>>> Thank you for the review.
>>> Actually deliverMoveResizeEvent() is always called once a window is 
>>> displayed. If the window is created using max W/H of the screen, the 
>>> function will be invoked and isZoomed field will contain the correct 
>>> value. I have just checked that.
>>> Thanks,
>>> Dmitry
>>>> On 23 Mar 2017, at 16:36, Sergey Bylokhov 
>>>> <Sergey.Bylokhov at oracle.com> wrote:
>>>> Hi, Dmitry.
>>>> Can you please check that the fix does not break the situation when 
>>>> the frame is created using max W/H of the screen. In this case the 
>>>> old zoom logic return true, is it possible that the new logic will 
>>>> return false since deliverMoveResizeEvent
>>>> will not be called?
>>>>> 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

More information about the awt-dev mailing list