diff --git a/src/java/com/samskivert/util/WeakObserverList.java b/src/java/com/samskivert/util/WeakObserverList.java index 2ac12495..e6a9c817 100644 --- a/src/java/com/samskivert/util/WeakObserverList.java +++ b/src/java/com/samskivert/util/WeakObserverList.java @@ -178,6 +178,18 @@ public class WeakObserverList extends AbstractList _wrappedList.apply(_derefOp); } + /** + * Removes all garbage-collected observers from the list. + */ + public void prune () + { + for (int ii = _wrappedList.size() - 1; ii >= 0; ii--) { + if (_wrappedList.get(ii).get() == null) { + _wrappedList.remove(ii); + } + } + } + /** * An operation that resolves a reference and applies a wrapped op. */