Commit in lcsim/sandbox/onoprien/org/lcsim/util on MAIN
Driver.java+5-51.1 -> 1.2


lcsim/sandbox/onoprien/org/lcsim/util
Driver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- Driver.java	24 Feb 2007 19:19:26 -0000	1.1
+++ Driver.java	7 Mar 2007 21:10:03 -0000	1.2
@@ -19,13 +19,14 @@
 /**
  *
  * @author D. Onoprienko
- * @version $Id: Driver.java,v 1.1 2007/02/24 19:19:26 onoprien Exp $
+ * @version $Id: Driver.java,v 1.2 2007/03/07 21:10:03 onoprien Exp $
  */
 public class Driver implements Iterable<Driver>, DetectorChangeListener {
   
 // -- Fields:  -----------------------------------------------------------------
   
-  static private List<DetectorChangeListener> _dcListeners = new ArrayList<DetectorChangeListener>();
+  static private WeakHashMap<DetectorChangeListener, Object> _dcListeners 
+                     = new WeakHashMap<DetectorChangeListener, Object>();
   static private Detector _detector;
   
 //  static private Driver _defDriver = new Driver();
@@ -247,7 +248,7 @@
   
   /** Add detector change listener. */
   static public void addDetectorChangeListener(DetectorChangeListener listener) {
-    _dcListeners.add(listener);
+    _dcListeners.put(listener, null);
     if (_detector != null) listener.detectorChanged(_detector);
   }
   
@@ -260,8 +261,7 @@
   static void fireDetectorChanged(Detector detector) {
     if (_detector != detector) {
       _detector = detector;
-      List<DetectorChangeListener> changeListeners = new ArrayList<DetectorChangeListener>(_dcListeners.size());
-      changeListeners.addAll(_dcListeners);
+      Set<DetectorChangeListener> changeListeners = _dcListeners.keySet();
       for (DetectorChangeListener listener : changeListeners) {
         listener.detectorChanged(detector);
       }
CVSspam 0.2.8