Fabric: Now `EventEmitter::setEnabled()` relies on stored `eventTarget` is not being nullptr
Summary: This diff implements a new model of managing `enabled` flag in EventEmitter. Now we simply rely on `eventTarget_` is not being `nullptr` (and we reset the pointer to "disable" the event emitter). Reviewed By: mdvacca Differential Revision: D9764857 fbshipit-source-id: 1dd3ce0c8589048babbf2dbac9f8359358b31a34
This commit is contained in:
Родитель
c25d5948a5
Коммит
b6e42517e5
|
@ -76,14 +76,18 @@ void EventEmitter::dispatchEvent(
|
|||
}
|
||||
|
||||
void EventEmitter::setEnabled(bool enabled) const {
|
||||
enabled_ = enabled;
|
||||
bool alreadyEnabled = eventTarget_ != nullptr;
|
||||
if (enabled == alreadyEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!enabled) {
|
||||
eventTarget_ = nullptr;
|
||||
eventTarget_.reset();
|
||||
}
|
||||
}
|
||||
|
||||
bool EventEmitter::getEnabled() const {
|
||||
return enabled_;
|
||||
return eventTarget_ != nullptr;
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
|
|
|
@ -56,6 +56,8 @@ public:
|
|||
/*
|
||||
* Indicates that an event can be delivered to `eventTarget`.
|
||||
* Callsite must acquire `DispatchMutex` to access those methods.
|
||||
* The `setEnabled` operation is not guaranteed: the `EventEmitter` cannot
|
||||
* be re-enabled after disabling; in this case, the method does nothing.
|
||||
*/
|
||||
void setEnabled(bool enabled) const;
|
||||
bool getEnabled() const;
|
||||
|
@ -75,7 +77,6 @@ private:
|
|||
mutable SharedEventTarget eventTarget_;
|
||||
Tag tag_;
|
||||
WeakEventDispatcher eventDispatcher_;
|
||||
mutable bool enabled_; // Protected by `DispatchMutex`.
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
|
|
Загрузка…
Ссылка в новой задаче