<AWT Dev> [8] Review request for 7186109: Simplify lock machinery for PostEventQueue & EventQueue
Oleg Pekhovskiy
oleg.pekhovskiy at oracle.com
Tue Aug 28 07:33:14 PDT 2012
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/>
More information about the awt-dev
mailing list