protected void fireEvent(int eventType) {
ArrayList<WeakReference<IControllerListener>> toRemove = new ArrayList<WeakReference<IControllerListener>>();
ControllerEvent event = new ControllerEvent(this, eventType);
synchronized (listenerList) {
for (WeakReference<IControllerListener> ref : listenerList) {
IControllerListener temp = ref.get();
if (temp == null) {
toRemove.add(ref);
}
else {
temp.controllerViewChanged(event);
}
}
listenerList.removeAll(toRemove);
}
toRemove.clear();