diff options
Diffstat (limited to 'java/awt/EventQueue.java')
| -rw-r--r-- | java/awt/EventQueue.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/java/awt/EventQueue.java b/java/awt/EventQueue.java index 74dbd5fb6..a76ba1afb 100644 --- a/java/awt/EventQueue.java +++ b/java/awt/EventQueue.java @@ -48,6 +48,7 @@ import java.awt.event.InvocationEvent; import java.awt.event.PaintEvent; import java.awt.peer.ComponentPeer; import java.awt.peer.LightweightPeer; +import java.lang.ref.WeakReference; import java.lang.reflect.InvocationTargetException; import java.util.EmptyStackException; @@ -128,10 +129,15 @@ public class EventQueue if (peekEvent() != null) return false; - Frame[] frames = Frame.getFrames(); - for (int i = 0; i < frames.length; ++i) - if (frames[i].isDisplayable()) - return false; + synchronized (Frame.weakFrames) + { + for (WeakReference<Frame> r : Frame.weakFrames) + { + Frame f = (Frame) r.get(); + if (f != null && f.isDisplayable()) + return false; + } + } return true; } |
