diff --git a/SPD-classes/src/main/java/com/watabou/utils/Signal.java b/SPD-classes/src/main/java/com/watabou/utils/Signal.java index 8bb6ee153..c2d5682f3 100644 --- a/SPD-classes/src/main/java/com/watabou/utils/Signal.java +++ b/SPD-classes/src/main/java/com/watabou/utils/Signal.java @@ -68,14 +68,19 @@ public class Signal { public synchronized void dispatch( T t ) { - canceled = false; - for (Listener listener : listeners) { + @SuppressWarnings("unchecked") + Listener[] list = listeners.toArray( new Listener[0] ); - listener.onSignal( t ); - if (canceled) { - return; + canceled = false; + for (Listener listener : list) { + + if (listeners.contains(listener)) { + listener.onSignal(t); + if (canceled) { + return; + } } - + } }