Index: modules/awt/src/main/java/common/java/awt/EventDispatchThread.java =================================================================== --- modules/awt/src/main/java/common/java/awt/EventDispatchThread.java (revision 488594) +++ modules/awt/src/main/java/common/java/awt/EventDispatchThread.java (working copy) @@ -46,44 +46,46 @@ try { runModalLoop(null); - } catch (Exception e) { - e.printStackTrace(); + } finally { + toolkit.shutdownWatchdog.forceShutdown(); } - - toolkit.shutdownWatchdog.forceShutdown(); } void runModalLoop(ModalContext context) { long lastPaintTime = System.currentTimeMillis(); while (!shutdownPending && (context == null || context.isModalLoopRunning())) { - EventQueue eventQueue = toolkit.getSystemEventQueueImpl(); - - NativeEvent ne = nativeQueue.getNextEvent(); - if (ne != null) { - dispatcher.onEvent(ne); - MarkerEvent marker = new MarkerEvent(this, 0); - eventQueue.postEvent(marker); - for (AWTEvent ae = eventQueue.getNextEventNoWait(); - (ae != null) && (ae != marker); - ae = eventQueue.getNextEventNoWait()) { - eventQueue.dispatchEvent(ae); - } - } else { - toolkit.shutdownWatchdog.setNativeQueueEmpty(true); - AWTEvent ae = eventQueue.getNextEventNoWait(); - if (ae != null) { - eventQueue.dispatchEvent(ae); - long curTime = System.currentTimeMillis(); - if (curTime - lastPaintTime > 10) { + try { + EventQueue eventQueue = toolkit.getSystemEventQueueImpl(); + + NativeEvent ne = nativeQueue.getNextEvent(); + if (ne != null) { + dispatcher.onEvent(ne); + MarkerEvent marker = new MarkerEvent(this, 0); + eventQueue.postEvent(marker); + for (AWTEvent ae = eventQueue.getNextEventNoWait(); + (ae != null) && (ae != marker); + ae = eventQueue.getNextEventNoWait()) { + eventQueue.dispatchEvent(ae); + } + } else { + toolkit.shutdownWatchdog.setNativeQueueEmpty(true); + AWTEvent ae = eventQueue.getNextEventNoWait(); + if (ae != null) { + eventQueue.dispatchEvent(ae); + long curTime = System.currentTimeMillis(); + if (curTime - lastPaintTime > 10) { + toolkit.onQueueEmpty(); + lastPaintTime = System.currentTimeMillis(); + } + } else { + toolkit.shutdownWatchdog.setAwtQueueEmpty(true); toolkit.onQueueEmpty(); lastPaintTime = System.currentTimeMillis(); + waitForAnyEvent(); } - } else { - toolkit.shutdownWatchdog.setAwtQueueEmpty(true); - toolkit.onQueueEmpty(); - lastPaintTime = System.currentTimeMillis(); - waitForAnyEvent(); } + } catch (Throwable t) { + t.printStackTrace(); } } }