Try to fix ConcurrentModificationException
This commit is contained in:
@@ -72,6 +72,10 @@ public final class EventManager<T extends Event> {
|
|||||||
return Event.Result.DEFAULT;
|
return Event.Result.DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private synchronized void removeConsumer(Consumer<T> consumer) {
|
||||||
|
handlers.removeValue(consumer);
|
||||||
|
}
|
||||||
|
|
||||||
private class WeakListener implements Consumer<T> {
|
private class WeakListener implements Consumer<T> {
|
||||||
private final WeakReference<Consumer<T>> ref;
|
private final WeakReference<Consumer<T>> ref;
|
||||||
|
|
||||||
@@ -83,7 +87,7 @@ public final class EventManager<T extends Event> {
|
|||||||
public void accept(T t) {
|
public void accept(T t) {
|
||||||
Consumer<T> listener = ref.get();
|
Consumer<T> listener = ref.get();
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
handlers.removeValue(this);
|
removeConsumer(this);
|
||||||
} else {
|
} else {
|
||||||
listener.accept(t);
|
listener.accept(t);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user