<AWT Dev> [7u8] Review request for 7177040: Deadlock between PostEventQueue.noEvents, EventQueue.isDispatchThread and SwingUtilities.invokeLater

Peter Levart peter.levart at gmail.com
Tue Jul 24 04:42:08 PDT 2012


Hi Oleg,

This is just cosmetics, but:

SunToolkit:
public synchronized boolean noEvents() {
        return queueHead == null && !isFlushing;
    }

... a thread calling noEvents could see occasional "spikes" of false return
even though there is no flushing being performed (when other thread is
calling flush on an empty PostEventQueue).

Improved flush method would look like this:

    public void flush() {
        EventQueueItem tempQueue;
        synchronized (this) {
            tempQueue = queueHead;
            queueHead = queueTail = null;
            isFlushing = *(tempQueue != null)*;

        }
        try {
            while (tempQueue != null) {
                eventQueue.postEvent(tempQueue.event);
                tempQueue = tempQueue.next;
            }
        }
        finally {
            isFlushing = false;
        }
    }


Regards, Peter

2012/7/23 Oleg Pekhovskiy <oleg.pekhovskiy at oracle.com>

> Hi!
>
> Please review this back-port being already pushed to jdk8 but deferred for
> 7u6.
>
> Bug:
> http://bugs.sun.com/view_bug.**do?bug_id=7177040<http://bugs.sun.com/view_bug.do?bug_id=7177040>
>
> Webrev:
> http://cr.openjdk.java.net/~**bagiras/7u8/7177040.1<http://cr.openjdk.java.net/~bagiras/7u8/7177040.1>
>
> Review thread for 7u6:
> http://mail.openjdk.java.net/**pipermail/awt-dev/2012-July/**003106.html<http://mail.openjdk.java.net/pipermail/awt-dev/2012-July/003106.html>
>
> Reviewers 7u6 & 8:
> Anthony Petrov, Anton Tarasov
>
> Thanks,
> Oleg
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20120724/3f2fc01b/attachment.html 


More information about the awt-dev mailing list