src/share/classes/sun/awt/SunDisplayChanger.java
Print this page
*** 26,38 ****
package sun.awt;
import java.awt.IllegalComponentStateException;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
- import java.util.HashMap;
import java.util.WeakHashMap;
import sun.util.logging.PlatformLogger;
/**
--- 26,39 ----
package sun.awt;
import java.awt.IllegalComponentStateException;
import java.util.Collections;
import java.util.Iterator;
+ import java.util.HashMap;
+ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.WeakHashMap;
import sun.util.logging.PlatformLogger;
/**
*** 52,67 ****
*
* displayChanged() is also called on Windows when they are moved from one
* screen to another on a system equipped with multiple displays.
*/
public class SunDisplayChanger {
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.multiscreen.SunDisplayChanger");
! // Create a new synchronizedMap with initial capacity of one listener.
// It is asserted that the most common case is to have one GraphicsDevice
// and one top-level Window.
! private Map listeners = Collections.synchronizedMap(new WeakHashMap(1));
public SunDisplayChanger() {}
/*
* Add a DisplayChangeListener to this SunDisplayChanger so that it is
--- 53,70 ----
*
* displayChanged() is also called on Windows when they are moved from one
* screen to another on a system equipped with multiple displays.
*/
public class SunDisplayChanger {
+
private static final PlatformLogger log = PlatformLogger.getLogger("sun.awt.multiscreen.SunDisplayChanger");
! // Create a new synchronized map with initial capacity of one listener.
// It is asserted that the most common case is to have one GraphicsDevice
// and one top-level Window.
! private Map<DisplayChangedListener, Void> listeners =
! Collections.synchronizedMap(new WeakHashMap<DisplayChangedListener, Void>(1));
public SunDisplayChanger() {}
/*
* Add a DisplayChangeListener to this SunDisplayChanger so that it is
*** 111,132 ****
// DisplayChangedListener remove itself from its list.
// Because all display change handling is done on the event thread,
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
! HashMap listClone;
! Set cloneSet;
synchronized(listeners) {
! listClone = new HashMap(listeners);
}
! cloneSet = listClone.keySet();
! Iterator itr = cloneSet.iterator();
while (itr.hasNext()) {
! DisplayChangedListener current =
! (DisplayChangedListener) itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("displayChanged for listener: " + current);
}
current.displayChanged();
--- 114,132 ----
// DisplayChangedListener remove itself from its list.
// Because all display change handling is done on the event thread,
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
! Set<DisplayChangedListener> cloneSet;
synchronized(listeners) {
! cloneSet = new HashSet<DisplayChangedListener>(listeners.keySet());
}
! Iterator<DisplayChangedListener> itr = cloneSet.iterator();
while (itr.hasNext()) {
! DisplayChangedListener current = itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("displayChanged for listener: " + current);
}
current.displayChanged();
*** 158,178 ****
// DisplayChangedListener remove itself from its list.
// Because all display change handling is done on the event thread,
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
! HashMap listClone;
! Set cloneSet;
synchronized (listeners) {
! listClone = new HashMap(listeners);
}
! cloneSet = listClone.keySet();
! Iterator itr = cloneSet.iterator();
while (itr.hasNext()) {
! DisplayChangedListener current =
! (DisplayChangedListener) itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("paletteChanged for listener: " + current);
}
current.paletteChanged();
--- 158,175 ----
// DisplayChangedListener remove itself from its list.
// Because all display change handling is done on the event thread,
// synchronization provides no protection against modifying the listener
// list while in the middle of iterating over it. -bchristi 7/10/2001
! Set<DisplayChangedListener> cloneSet;
synchronized (listeners) {
! cloneSet = new HashSet<DisplayChangedListener>(listeners.keySet());
}
! Iterator<DisplayChangedListener> itr = cloneSet.iterator();
while (itr.hasNext()) {
! DisplayChangedListener current = itr.next();
try {
if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("paletteChanged for listener: " + current);
}
current.paletteChanged();