src/share/classes/java/awt/EventQueue.java

Print this page

        

*** 1037,1057 **** * associated event queue. It is important because we notify * that the event dispatch thread is busy after posting a new event * to its queue, so the EventQueue.dispatchThread reference must * be valid at that point. */ pushPopLock.lock(); try { if (edt == dispatchThread) { /* * Don't detach the thread if any events are pending. Not * sure if it's a possible scenario, though. * * Fix for 4648733. Check both the associated java event * queue and the PostEventQueue. */ ! if (!forceDetach && (peekEvent() != null) || !SunToolkit.isPostEventQueueEmpty()) { return false; } dispatchThread = null; } AWTAutoShutdown.getInstance().notifyThreadFree(edt); --- 1037,1058 ---- * associated event queue. It is important because we notify * that the event dispatch thread is busy after posting a new event * to its queue, so the EventQueue.dispatchThread reference must * be valid at that point. */ + SunToolkit.flushPendingEvents(); pushPopLock.lock(); try { if (edt == dispatchThread) { /* * Don't detach the thread if any events are pending. Not * sure if it's a possible scenario, though. * * Fix for 4648733. Check both the associated java event * queue and the PostEventQueue. */ ! if (!forceDetach && (peekEvent() != null)) { return false; } dispatchThread = null; } AWTAutoShutdown.getInstance().notifyThreadFree(edt);