<AWT Dev> [9] review request for 8066436: Minimize can cause window to disappear on osx

Nakul Natu nakul.natu at oracle.com
Mon Mar 9 18:48:14 UTC 2015


Thank you Sergey! Can anyone else also review this please?

Nakul

On 3/9/15, 8:05 AM, Sergey Bylokhov wrote:
> Hi, Nakul.
> The fix looks good.
>
> 05.03.15 14:26, Nakul Natu wrote:
>> Hi Sergey and all,
>>
>> Updated webrev with suggested changes and testcase.
>>
>> http://cr.openjdk.java.net/~van/8066436/webrev.01/
>>
>> Regards,
>> Nakul
>>
>> On 3/4/15, 5:17 AM, Sergey Bylokhov wrote:
>>> Hi, Nakul.
>>> Thanks for the fix.
>>> A few notes:
>>>  - Please remove the bugid information from the comment since we 
>>> have mercurial history for such notes.
>>>  - I suppose that the comment can be shorter, like this: "We need an 
>>> up to date size of the peer, so we flush the native events to be 
>>> sure that there are no setBounds requests in the queue."
>>>  - Can you provide a test case for this bug, even if you cannot 
>>> reproduce it on your local system, you can write a test, which will 
>>> fail on the users system.
>>>
>>> On 02.03.2015 22:18, Nakul Natu wrote:
>>>> Hello,
>>>>
>>>> Please review the fix for JDK 9.
>>>>
>>>> CPlatformWindow set bounds using setBounds() which calls native 
>>>> function nativeNSSetWindowBounds() -> calls the OSX function. After 
>>>> that ox callbacks to java using deliverMoveresizeEvent() where the 
>>>> peer or window associated with native window is notified of change 
>>>> of bounds.
>>>>
>>>> In maximize() we need peer’s bound which are saved as normalBounds 
>>>> to use them to unmaximize.
>>>>
>>>> The problem
>>>> 1. Customer creates window where the size width height is (1, 1)
>>>> 2. setSize call is made (600,900) which starts the setBounds 
>>>> process described earlier
>>>> 3. setExtendedState(MAXIMIZED) is called which calls maximize(). 
>>>> But the callback for deliverMoveresizeEvent() has not yet processed 
>>>> and the the bounds we get are earlier (1,1).
>>>> 4. Window is maximized.
>>>> 5. Now when we try to unmaximize or iconify the window the size is 
>>>> set to (1,1) and we can’t see the window.
>>>>
>>>> Even if we are using the bounds which are available (as the event 
>>>> processing is asynchronous) this can cause lot of problems as the 
>>>> window just disappears. Adding LWCToolkit.flushNativeSelectors(); 
>>>> just before saving the bounds can get us the correct bounds which 
>>>> we are expecting.
>>>>
>>>> Bug : https://bugs.openjdk.java.net/browse/JDK-8066436
>>>> Webrev: http://cr.openjdk.java.net/~van/8066436/webrev.00/
>>>>
>>>> Regards,
>>>> Nakul
>>>>
>>>
>>>
>>> -- 
>>> Best regards, Sergey.
>
>
> -- 
> Best regards, Sergey.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20150309/ad6ba38c/attachment.html>


More information about the awt-dev mailing list