voidEventDispatcher::updateListeners(Event* event) { CCASSERT(_inDispatch > 0, "If program goes here, there should be event in dispatch."); if (_inDispatch > 1) return; ... if (!_toAddedListeners.empty()) { for (auto& listener : _toAddedListeners) { forceAddEventListener(listener); } _toAddedListeners.clear(); } if (!_toRemovedListeners.empty()) { cleanToRemovedListeners(); } }
voidEventDispatcher::updateListeners(Event* event) { ... auto onUpdateListeners = [this](const EventListener::ListenerID& listenerID) { ... if (sceneGraphPriorityListeners) { for (auto iter = sceneGraphPriorityListeners->begin(); iter != sceneGraphPriorityListeners->end();) { auto l = *iter; if (!l->isRegistered()) { ... // if item in toRemove list, remove it from the list setDirty(l->getListenerID(), DirtyFlag::SCENE_GRAPH_PRIORITY); .. } ... } } if (fixedPriorityListeners) { for (auto iter = fixedPriorityListeners->begin(); iter != fixedPriorityListeners->end();) { auto l = *iter; if (!l->isRegistered()) { ... // if item in toRemove list, remove it from the list setDirty(l->getListenerID(), DirtyFlag::FIXED_PRIORITY); ... } ... } } ... }; ... }