Author: noelgrandin
Date: Mon May 30 07:48:46 2011
New Revision: 1129031

URL: http://svn.apache.org/viewvc?rev=1129031&view=rev
Log:
PIVOT-747 pivot & blocking edt

Modified:
    pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java
URL: 
http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java?rev=1129031&r1=1129030&r2=1129031&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Container.java Mon May 30 07:48:46 
2011
@@ -845,11 +845,21 @@ public abstract class Container extends 
     }
 
     public static final void assertEventDispatchThread() {
+        String threadName = Thread.currentThread().getName();
         /* Currently, application startup happens on the main thread, so we 
need to allow
          * that thread to modify WTK state.
          */
-        if (!java.awt.EventQueue.isDispatchThread()
-             && !Thread.currentThread().getName().equals("main")) {
+        if (threadName.equals("main")) {
+            return;
+        }
+        /*
+         * See Sun/Oracle bug 6424157. There is a race condition where we can 
be running on the event thread
+         * but isDispatchThread() will return false.
+         */
+        if (threadName.startsWith("AWT-EventQueue-")) {
+            return;
+        }
+        if (!java.awt.EventQueue.isDispatchThread()) {
             throw new IllegalStateException("this method can only be called 
from the AWT event dispatch thread");
         }
     }


Reply via email to