From fd76ca6d808e06e8305a766ea8a91abf39d192f8 Mon Sep 17 00:00:00 2001 From: Artem Ananiev Date: Fri, 17 Apr 2009 12:46:24 +0400 Subject: [PATCH] 6829923: Test javax/swing/system/6799345/TestShutdown.java fails on X11 platforms XAWT toolkit thread is correctly interrupted when AppContext is disposed Reviewed-by: anthony, peterz --- jdk/src/solaris/classes/sun/awt/X11/XToolkit.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java index c3011dfa6a2..d969f0c4c1d 100644 --- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java +++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java @@ -565,6 +565,17 @@ public final class XToolkit extends UNIXToolkit implements Runnable { { XEvent ev = new XEvent(); while(true) { + // Fix for 6829923: we should gracefully handle toolkit thread interruption + if (Thread.currentThread().isInterrupted()) { + // We expect interruption from the AppContext.dispose() method only. + // If the thread is interrupted from another place, let's skip it + // for compatibility reasons. Probably some time later we'll remove + // the check for AppContext.isDisposed() and will unconditionally + // break the loop here. + if (AppContext.getAppContext().isDisposed()) { + break; + } + } awtLock(); try { if (loop == SECONDARY_LOOP) {