src/share/classes/sun/awt/SunToolkit.java
Print this page
@@ -542,19 +542,17 @@
}
}, PeerEvent.ULTIMATE_PRIORITY_EVENT);
postEvent(targetToAppContext(e.getSource()), pe);
}
- protected static final Lock flushLock = new ReentrantLock();
private static boolean isFlushingPendingEvents = false;
/*
* Flush any pending events which haven't been posted to the AWT
* EventQueue yet.
*/
public static void flushPendingEvents() {
- flushLock.lock();
try {
// Don't call flushPendingEvents() recursively
if (!isFlushingPendingEvents) {
isFlushingPendingEvents = true;
AppContext appContext = AppContext.getAppContext();
@@ -564,22 +562,10 @@
postEventQueue.flush();
}
}
} finally {
isFlushingPendingEvents = false;
- flushLock.unlock();
- }
- }
-
- public static boolean isPostEventQueueEmpty() {
- AppContext appContext = AppContext.getAppContext();
- PostEventQueue postEventQueue =
- (PostEventQueue)appContext.get(POST_EVENT_QUEUE_KEY);
- if (postEventQueue != null) {
- return postEventQueue.noEvents();
- } else {
- return true;
}
}
/*
* Execute a chunk of code on the Java event handler thread for the
@@ -2110,47 +2096,31 @@
class PostEventQueue {
private EventQueueItem queueHead = null;
private EventQueueItem queueTail = null;
private final EventQueue eventQueue;
- // For the case when queue is cleared but events are not posted
- private volatile boolean isFlushing = false;
-
PostEventQueue(EventQueue eq) {
eventQueue = eq;
}
- public synchronized boolean noEvents() {
- return queueHead == null && !isFlushing;
- }
-
/*
* Continually post pending AWTEvents to the Java EventQueue. The method
* is synchronized to ensure the flush is completed before a new event
* can be posted to this queue.
*
* 7177040: The method couldn't be wholly synchronized because of calls
* of EventQueue.postEvent() that uses pushPopLock, otherwise it could
* potentially lead to deadlock
*/
- public void flush() {
- EventQueueItem tempQueue;
- synchronized (this) {
- tempQueue = queueHead;
+ public synchronized void flush() {
+ EventQueueItem tempQueue = queueHead;
queueHead = queueTail = null;
- isFlushing = true;
- }
- try {
while (tempQueue != null) {
eventQueue.postEvent(tempQueue.event);
tempQueue = tempQueue.next;
}
}
- finally {
- isFlushing = false;
- }
- }
/*
* Enqueue an AWTEvent to be posted to the Java EventQueue.
*/
void postEvent(AWTEvent event) {