<AWT Dev> [10] Review Request: 8186263 The SunDropTargetEvent sometimes is not dispatched
Phil Race
philip.race at oracle.com
Thu Aug 17 19:56:22 UTC 2017
Looks OK to me.
-phil.
On 08/17/2017 11:56 AM, Sergey Bylokhov wrote:
> Hello,
> Please review one more fix for DnD in jdk10.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8186263
> Webrev can be found at: http://cr.openjdk.java.net/~serb/8186263/webrev.00
>
> The SunDropTargetEventEach is a special kind of MouseEvent and each SunDropTargetEvent should be dispatched, because this event stop the ToolkitThreadBlockedHandler.
>
> - The nested event loop is started before SunDropTargetEvent is created. See SunDropTargetContextPeer.postDropTargetEvent()
> - The SunDropTargetEvent is posted with assumption that when it will be dispatched it will stop the nested event loop. See SunDropTargetContextPeer.unregisterEvent().
>
> SunDropTargetEvent is a subclass of MouseEvent. The dispatch of MouseEvent may be skipped if this event will be coalesced or if the target component will be disposed.
>
> The coalescing of the SunDropTargetEvent was fixed in JDK-7177144, but it is still possible to lose the SunDropTargetEvent if the target component wlll be disposed after the event was posted, but before dispatch. This can cause a hang in DnD machinery.
>
> After the fix we will stop the nested loop even if the SunDropTargetEventEach is removed from the EventQueue.
>
> The test was modified to reproduce the bug more often on macOS and Linux.
> Note that the test still fail time to time on macOS because of [1].
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8186002
More information about the awt-dev
mailing list