* java/awt/EventQueue.java (isDispatchThread): Do check on top of stack. ...
authorFernando Nasser <fnasser@redhat.com>
Tue, 13 Jan 2004 22:51:26 +0000 (22:51 +0000)
committerFernando Nasser <fnasser@gcc.gnu.org>
Tue, 13 Jan 2004 22:51:26 +0000 (22:51 +0000)
From-SVN: r75820

libjava/ChangeLog
libjava/java/awt/EventQueue.java

index ea7d4adef8e270dbafa73619e37861a5e8a9e33d..b771b1f69a0e7185fefaf6548d5b9d89f98e510c 100644 (file)
@@ -1,3 +1,8 @@
+2004-01-13  Fernando Nasser  <fnasser@redhat.com>
+
+       * java/awt/EventQueue.java (isDispatchThread): Do check on top of stack.
+       (push): Make sure push is performed at the top of the thread stack.
 2004-01-13  Thomas Fitzsimmons  <fitzsim@redhat.com>
 
        * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java,
@@ -47,7 +52,7 @@
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMainThread.c (gtkInit):
        Update postConfigureEvent signature.
 
-2004-01-12  Fernando Nasser  <fnasser@redhat.com>
+2004-01-13  Fernando Nasser  <fnasser@redhat.com>
  
        * gnu/java/awt/peer/gtk/TestAWT.java (DialogWindow): Add WindowAdapter
        to handle Window "Closing" events.
index 45dc9713b6e4a46a7a03213fe130c2b291746a78..d20edbc13b069af02a678395c4051e3925d3e362 100644 (file)
@@ -269,12 +269,17 @@ public class EventQueue
   }
 
   /**
-   * Return true if the current thread is the AWT event dispatch
+   * Return true if the current thread is the current AWT event dispatch
    * thread.
    */
   public static boolean isDispatchThread()
   {
-    EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue(); 
+    EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
+    
+    /* Find last EventQueue in chain */ 
+    while (eq.next != null)
+      eq = eq.next;
+
     return (Thread.currentThread() == eq.dispatchThread);
   }
 
@@ -306,6 +311,15 @@ public class EventQueue
     if (newEventQueue == null)
       throw new NullPointerException ();
 
+    /* Make sure we are at the top of the stack because callers can
+       only get a reference to the one at the bottom using
+       Toolkit.getDefaultToolkit().getSystemEventQueue() */
+    if (next != null)
+      {
+        next.push (newEventQueue);
+        return;
+      }
+
     int i = next_out;
     while (i != next_in)
       {