<AWT Dev> [9] Review request for 8167652: Making a frame/dialog resizeble/unresizeble shifts its position on Unity.

Alexander Zvegintsev alexander.zvegintsev at oracle.com
Mon Dec 19 17:21:24 UTC 2016


Looks good to me.

Thanks,
Alexander.

On 26/10/2016 16:06, Semyon Sadetsky wrote:
> Please review the updated fix: 
> http://cr.openjdk.java.net/~ssadetsky/8167652/webrev.01/
>
> - unnecessary AWT locks are removed
>
> - client code calls are taken away from AWT lock blocks
>
> - some design improvements are made
>
> --Semyon
>
>
> On 10/19/2016 8:38 PM, Sergey Bylokhov wrote:
>> Hi, Semyon.
>> A few notes.
>>  - The awtLock is a lowlevel lock which should be used only when we 
>> access the xlib and some other native resource like opengl. We should 
>> not call the users code on it. In the fix the code in 
>> XDecoratedPeer.updateMinimumSize() will call the users code.
>>  - Some of the changed methods are called already under this lock, 
>> for example XDecoratedPeer.handlePropertyNotify(), and probably others.
>>
>> On 18.10.16 16:46, Semyon Sadetsky wrote:
>>> Hello,
>>>
>>> Please review fix for JDK9:
>>>
>>> bug: https://bugs.openjdk.java.net/browse/JDK-8167652
>>>
>>> webrev: http://cr.openjdk.java.net/~ssadetsky/8167652/webrev.00/
>>>
>>> In Linux, when a frame or dilalog is made resizable or non-resizable 
>>> the
>>> window decoration need to be updated. For that purpose window is
>>> unmapped and mapped again and WM changes the window decoration parent.
>>> The re-parenting may cause WM to send intermediate "artifact events"
>>> which change the window location on the screen, this WM behavior is
>>> undocumented. To avoid window move the window shift is compensated in
>>> XWM.setShellResizable()/XWM.setShellNotResizable(), but Unity WM shifts
>>> the window position in different way. In the proposed solution the
>>> window shift compensation is adjusted for Unity WM.
>>>
>>> Also in the fix all writes to the fields that store the current 
>>> state of
>>> window dimensions are protected with the AWT lock. This is necessary to
>>> avoid unexpected window move or resize when the window dimensions are
>>> changed from the user thread concurrently while the AWT toolkit thread
>>> handles WM sent notifications affecting the current window state, size,
>>> position, insets, etc.
>>>
>>> --Semyon
>>>
>>
>>
>



More information about the awt-dev mailing list