<AWT Dev> [8] Review request for 7186109: Simplify lock machinery for PostEventQueue & EventQueue

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Aug 28 08:23:22 PDT 2012


Hi, Oleg.
If I'm not missing something, the flush method became asynchronous for 
some invocations. Because it can returns before flush actually happens. 
This is expected?

28.08.2012 18:33, Oleg Pekhovskiy wrote:
> Hi Artem, Anthony,
>
> thank you for your proposals!
>
> We with Artem also had off-line discussion,
> so as a result I prepared improved version of fix:
> http://cr.openjdk.java.net/~bagiras/8/7186109.3/
>
> What was done:
> 1. EventQueue.detachDispatchThread(): moved 
> SunToolkit.flushPnedingEvents() above the comments and added a 
> separate comment to it.
> 2. Moved SunToolkitSubclass.flushPendingEvents(AppContext) method to 
> SunToolkit. Deleted SunToolkitSubclass.
> 3. Moved isFlushingPendingEvents to PostEventQueue with the new name - 
> isThreadLocalFlushing and made it ThreadLocal.
> 4. Left PostEventQueue.flush() unsynchronized and created 
> wait()-notifyAll() synchronization mechanism to avoid blocking of 
> PostEventQueue.postEvent().
>
> Looking forward to your comments!
>
> Thanks,
> Oleg
>
> 20.08.2012 20:20, Artem Ananiev wrote:
>> Hi, Oleg,
>>
>> here are a few comments:
>>
>> 1. What is the reason of keeping "isFlushingPendingEvents" in 
>> SunToolkit, given that PEQ.flush() is synchronized (and therefore 
>> serialized) anyway?
>>
>> 2. flushPendingEvents(AppContext) may be moved directly to 
>> SunToolkit, so we don't need a separate sun-class for that.
>>
>> 3. EQ.java:1035-1040 - this comment is obsolete and must be replaced 
>> by another one.
>>
>> Thanks,
>>
>> Artem
>>
>> On 8/17/2012 4:49 PM, Oleg Pekhovskiy wrote:
>>> Hi!
>>>
>>> Please review the fix for CR:
>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7186109
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~bagiras/8/7186109.1/
>>>
>>> The following changes were made:
>>> 1. Removed flushLock from SunToolkit.flushPendingEvent()
>>> 2. Returned method PostEventQueue.flush() as 'synchronized' back
>>> 3. Added call of SunToolkit.flushPendingEvents() to
>>> EventQueue.detachDispatchThread(),
>>> right before pushPopLock.lock()
>>> 4. Removed !SunToolkit.isPostEventQueueEmpty() check from
>>> EventQueue.detachDispatchThread()
>>> 5. Removed SunToolkit.isPostEventQueueEmpty() & 
>>> PostEventQueue.noEvents();
>>>
>>> Thanks,
>>> Oleg
>>> <http://cr.openjdk.java.net/%7Ebagiras/8/7186109.1/>
>
>


-- 
Best regards, Sergey.




More information about the awt-dev mailing list