mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Pass EventDispatcher listeners by value (#45077)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/45077 Changelog: [Internal] Reviewed By: sammy-SC Differential Revision: D58791938 fbshipit-source-id: 079fbfad4dd309a41c360e1bdb93e56f8793e6b3
This commit is contained in:
committed by
Facebook GitHub Bot
parent
a2cb34371e
commit
2e6f105ef3
@@ -59,12 +59,13 @@ void EventDispatcher::dispatchUniqueEvent(RawEvent&& rawEvent) const {
|
||||
if (eventListeners_.willDispatchEvent(rawEvent)) {
|
||||
return;
|
||||
}
|
||||
|
||||
eventQueue_.enqueueUniqueEvent(std::move(rawEvent));
|
||||
}
|
||||
|
||||
void EventDispatcher::addListener(
|
||||
const std::shared_ptr<const EventListener>& listener) const {
|
||||
eventListeners_.addListener(listener);
|
||||
std::shared_ptr<const EventListener> listener) const {
|
||||
eventListeners_.addListener(std::move(listener));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -64,7 +64,7 @@ class EventDispatcher {
|
||||
/*
|
||||
* Adds provided event listener to the event dispatcher.
|
||||
*/
|
||||
void addListener(const std::shared_ptr<const EventListener>& listener) const;
|
||||
void addListener(std::shared_ptr<const EventListener> listener) const;
|
||||
|
||||
/*
|
||||
* Removes provided event listener to the event dispatcher.
|
||||
|
||||
@@ -16,16 +16,19 @@ bool EventListenerContainer::willDispatchEvent(const RawEvent& event) {
|
||||
|
||||
bool handled = false;
|
||||
for (const auto& listener : eventListeners_) {
|
||||
handled = handled || listener->operator()(event);
|
||||
handled = (*listener)(event);
|
||||
if (handled) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return handled;
|
||||
}
|
||||
|
||||
void EventListenerContainer::addListener(
|
||||
const std::shared_ptr<const EventListener>& listener) {
|
||||
std::shared_ptr<const EventListener> listener) {
|
||||
std::unique_lock lock(mutex_);
|
||||
|
||||
eventListeners_.push_back(listener);
|
||||
eventListeners_.push_back(std::move(listener));
|
||||
}
|
||||
|
||||
void EventListenerContainer::removeListener(
|
||||
|
||||
@@ -30,7 +30,7 @@ class EventListenerContainer {
|
||||
*/
|
||||
bool willDispatchEvent(const RawEvent& event);
|
||||
|
||||
void addListener(const std::shared_ptr<const EventListener>& listener);
|
||||
void addListener(std::shared_ptr<const EventListener> listener);
|
||||
void removeListener(const std::shared_ptr<const EventListener>& listener);
|
||||
|
||||
private:
|
||||
|
||||
@@ -364,9 +364,9 @@ std::shared_ptr<UIManager> Scheduler::getUIManager() const {
|
||||
}
|
||||
|
||||
void Scheduler::addEventListener(
|
||||
const std::shared_ptr<const EventListener>& listener) {
|
||||
std::shared_ptr<const EventListener> listener) {
|
||||
if (eventDispatcher_->has_value()) {
|
||||
eventDispatcher_->value().addListener(listener);
|
||||
eventDispatcher_->value().addListener(std::move(listener));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ class Scheduler final : public UIManagerDelegate {
|
||||
void reportMount(SurfaceId surfaceId) const;
|
||||
|
||||
#pragma mark - Event listeners
|
||||
void addEventListener(const std::shared_ptr<const EventListener>& listener);
|
||||
void addEventListener(std::shared_ptr<const EventListener> listener);
|
||||
void removeEventListener(
|
||||
const std::shared_ptr<const EventListener>& listener);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user