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:
Pieter De Baets
2024-06-20 06:15:11 -07:00
committed by Facebook GitHub Bot
parent a2cb34371e
commit 2e6f105ef3
6 changed files with 14 additions and 10 deletions
@@ -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);