<AWT Dev> [9] Review Request: JDK-8042087 [macosx] LWCToolkit.inokeAndWait is calling EventQueue.invokeLater

Anthony Petrov anthony.petrov at oracle.com
Tue Apr 29 17:37:59 UTC 2014


Hi Petr,

While the bug description and the solution sound reasonable, I'm still a 
bit concerned about the presence of the if(component==null) branch in 
the old code. I see that the code has been updated recently (with 
lambdas and friends), and is aware of the app contexts thing. So someone 
who wrote it, added that branch consciously. Or left it there from the 
former version of the code that might not be aware of the app contexts 
problems. In either case, w/o knowing why the branch is there in the 
first place, it seems a bit scary to just chop it off.

Could you please investigate a bit more and provide some details so that 
we could be sure this change doesn't cause any regressions?

--
best regards,
Anthony

On 4/29/2014 3:04 PM, Petr Pchelko wrote:
> Hello, Sergey.
>
>>> Hello, AWT Team.
>>>
>>> Please review the fix for the issue:
>>> https://bugs.openjdk.java.net/browse/JDK-8042087
>>> The fix is available at:
>>> http://cr.openjdk.java.net/~pchelko/9/8042087/webrev/
>>>
>>> The problem is that we are using EventQueue.invokeLater on the Toolkit thread.
>> I guess the fix changes getSystemEventQueueForInvokeAndWait().postEvent(), and EventQueue.invokeLater is used in another place of LWCToolkit in systemColorsChanged().
>>> In applet mode this would fail with NPE. So I've removed the non-working code branch, made general cleanup and added a null check for the component provided to invokeAndWait and invokeLater methods.
> Yes, I've called the bug incorrectly) It should be called "[macosx] LWCToolkit.inokeAndWait is relying on main AppContext".. Sorry for 	inaccuracy. I've renamed the issue.
>
> With best regards. Petr.
>
> On 29.04.2014, at 14:38, Sergey Bylokhov <Sergey.Bylokhov at oracle.com> wrote:
>
>> On 4/29/14 12:32 PM, Petr Pchelko wrote:
>>> Hello, AWT Team.
>>>
>>> Please review the fix for the issue:
>>> https://bugs.openjdk.java.net/browse/JDK-8042087
>>> The fix is available at:
>>> http://cr.openjdk.java.net/~pchelko/9/8042087/webrev/
>>>
>>> The problem is that we are using EventQueue.invokeLater on the Toolkit thread.
>> I guess the fix changes getSystemEventQueueForInvokeAndWait().postEvent(), and EventQueue.invokeLater is used in another place of LWCToolkit in systemColorsChanged().
>>> In applet mode this would fail with NPE. So I've removed the non-working code branch, made general cleanup and added a null check for the component provided to invokeAndWait and invokeLater methods.
>>> We don't have open bugs on Mac about NPE in applet mode, so most likely the removed branch was never executed. But with this fix we would catch possible errors early.
>>>
>>> With best regards. Petr.
>>
>>
>> --
>> Best regards, Sergey.
>>
>


More information about the awt-dev mailing list