From 25c3f7c8b94b62cc83adf1c24bb323ff1c46416b Mon Sep 17 00:00:00 2001 From: Fernando Nasser Date: Tue, 13 Jan 2004 22:51:26 +0000 Subject: [PATCH] * java/awt/EventQueue.java (isDispatchThread): Do check on top of stack. (push): Make sure push is performed at the top of the thread stack. From-SVN: r75820 --- libjava/ChangeLog | 7 ++++++- libjava/java/awt/EventQueue.java | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index ea7d4adef8e..b771b1f69a0 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2004-01-13 Fernando Nasser + + * 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 * 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 +2004-01-13 Fernando Nasser * gnu/java/awt/peer/gtk/TestAWT.java (DialogWindow): Add WindowAdapter to handle Window "Closing" events. diff --git a/libjava/java/awt/EventQueue.java b/libjava/java/awt/EventQueue.java index 45dc9713b6e..d20edbc13b0 100644 --- a/libjava/java/awt/EventQueue.java +++ b/libjava/java/awt/EventQueue.java @@ -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) { -- 2.30.2