[8] Review request for 7186109: Simplify lock machinery for PostEventQueue & EventQueue (original) (raw)

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/viewbug.do?bugid=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