<AWT Dev> [10] RFR JDK-8088132:[Swing, singleThread] ClassCastException in nested event loop when showing multiple message dialogs in SwingNode

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Mon Sep 18 18:27:50 UTC 2017


Hi, Prasanta.
  - In this version it is unclear what is a purpose of the 
"fxCheckSequenceThread.start()". This code will start the thread and 
will continue execution, it will not wait when the thread will stop.
  - The DefaultKeyboardFocusManager also should check for 
"javafx.embed.singleThread"


On 9/13/17 03:11, Prasanta Sadhukhan wrote:
> Hi Sergey,
> 
> I have modified the fix to not use SecondaryLoop and not to create one 
> thread per dispatch
> http://cr.openjdk.java.net/~psadhukhan/8088132/webrev.03/
> 
> Regards
> Prasanta
> On 8/30/2017 11:41 AM, Sergey Bylokhov wrote:
>> Hi, Prasanta.
>> Can you please provide some description on how the SecondaryLoop will 
>> work when it will run on Appkit thread? Is it possible to get a 
>> deadlock here, since appkit will be blocked?
>>
>>> sequence, ie if the event is not first in sequence, then it will made
>>> to
>>> wait till it is the first event or till it is disposed.
>> Note that the new code (unlike lines 139-150) also waits 1 second, so 
>> we can get a situation when only one event will be dispatched per 
>> second, which is not we want to do.
>> I am not sure how often we create SequencedEvent but creating one 
>> thread per dispatch look inefficient.
>>
>>
>>> Modified webrev
>>> http://cr.openjdk.java.net/~psadhukhan/fx/8088132/webrev.02/
>>>
>>> Regards
>>> Prasanta
>>> On 8/23/2017 9:31 PM, Sergey Bylokhov wrote:
>>>> Hi, Prasanta.
>>>>
>>>> On 16.08.2017 3:33, Prasanta Sadhukhan wrote:
>>>>> Now, since here FX App thread itself is the dispatch thread, we can
>>>>> be sure the events are dispatched in sequence and dispose is
>>> checked
>>>>> below after EDT.
>>>> Why we can sure about this? If the SequencedEvents were created in
>>> one
>>>> order but dispatch() for each were called in other order then the
>>>> sequenced will not be preserved?
>>>>
>>>>> I have tested with couple of singleThread testcase without any
>>> issue.
>>>>> Regards
>>>>> Prasanta
>>>>> On 8/14/2017 10:07 PM, Sergey Bylokhov wrote:
>>>>>> Hi, Prasanta, Kevin.
>>>>>>
>>>>>> I have two notes.
>>>>>>    - Does this option is really supported? If it is supported we
>>>>>> should evaluate all usage of EventDispatchThread because in this
>>>>>> mode the dispatch thread is not EDT. For example I am not sure
>>> that
>>>>>> we can skip the code which expects EventDispatchThread.
>>>>>>    - We have the similar pattern: "EventQueue.isDispatchThread() ->
>>>>>> cast(EventDispatchThread)" in some other places like in
>>>>>> DefaultKeyboardFocusManager.
>>>>>>
>>>>>> -----prasanta.sadhukhan at oracle.com  wrote:
>>>>>>
>>>>>>> Hi All,
>>>>>>>
>>>>>>> Please review this fix
>>>>>>> http://cr.openjdk.java.net/~psadhukhan/fx/8088132/webrev.00/
>>>>>>> for an fx issue
>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8088132
>>>>>>>
>>>>>>> More info in JBS.
>>>>>>>
>>>>>>> Regards
>>>>>>> Prasanta
>>>>
> 


-- 
Best regards, Sergey.


More information about the openjfx-dev mailing list