Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,17 @@ AnimatedPropsRegistry::getMap(SurfaceId surfaceId) {

void AnimatedPropsRegistry::clear(SurfaceId surfaceId) {
auto lock = std::lock_guard(mutex_);
if (auto it = surfaceContexts_.find(surfaceId);
it != surfaceContexts_.end()) {
auto& surfaceContext = it->second;
surfaceContext.families.clear();
surfaceContext.map.clear();
}
}

auto& surfaceContext = surfaceContexts_[surfaceId];
surfaceContext.families.clear();
surfaceContext.map.clear();
void AnimatedPropsRegistry::clearOnSurfaceStop(SurfaceId surfaceId) {
auto lock = std::lock_guard(mutex_);
surfaceContexts_.erase(surfaceId);
}

} // namespace facebook::react
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class AnimatedPropsRegistry {
public:
void update(const std::unordered_map<SurfaceId, SurfaceUpdates> &surfaceUpdates);
void clear(SurfaceId surfaceId);
void clearOnSurfaceStop(SurfaceId surfaceId);
std::pair<std::unordered_set<std::shared_ptr<const ShadowNodeFamily>> &, SnapshotMap &> getMap(SurfaceId surfaceId);

private:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,10 @@ void AnimationBackend::clearRegistry(SurfaceId surfaceId) {
animatedPropsRegistry_->clear(surfaceId);
}

void AnimationBackend::clearRegistryOnSurfaceStop(SurfaceId surfaceId) {
animatedPropsRegistry_->clearOnSurfaceStop(surfaceId);
}

void AnimationBackend::registerJSInvoker(
std::shared_ptr<CallInvoker> jsInvoker) {
if (!jsInvoker_) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class AnimationBackend : public UIManagerAnimationBackend {
void synchronouslyUpdateProps(const std::unordered_map<Tag, AnimatedProps> &updates);
void requestAsyncFlushForSurfaces(const std::set<SurfaceId> &surfaces);
void clearRegistry(SurfaceId surfaceId) override;
void clearRegistryOnSurfaceStop(SurfaceId surfaceId) override;
void registerJSInvoker(std::shared_ptr<CallInvoker> jsInvoker) override;

void onAnimationFrame(AnimationTimestamp timestamp) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,9 +272,13 @@ void UIManager::setSurfaceProps(
ShadowTree::Unique UIManager::stopSurface(SurfaceId surfaceId) const {
TraceSection s("UIManager::stopSurface");

// Stop any ongoing animations.
// Stop any ongoing layout animations.
stopSurfaceForAnimationDelegate(surfaceId);

if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) {
animationBackend_->clearRegistryOnSurfaceStop(surfaceId);
}

// Waiting for all concurrent commits to be finished and unregistering the
// `ShadowTree`.
auto shadowTree = getShadowTreeRegistry().remove(surfaceId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class UIManagerAnimationBackend {
virtual CallbackId start(const Callback &callback) = 0;
virtual void stop(CallbackId callbackId) = 0;
virtual void clearRegistry(SurfaceId surfaceId) = 0;
virtual void clearRegistryOnSurfaceStop(SurfaceId surfaceId) = 0;
virtual void trigger() = 0;
virtual void pushAnimationMutations(const Callback &callback) = 0;
virtual void registerJSInvoker(std::shared_ptr<CallInvoker> jsInvoker) = 0;
Expand Down
5 changes: 4 additions & 1 deletion scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api
Original file line number Diff line number Diff line change
Expand Up @@ -1536,6 +1536,7 @@ class facebook::react::AnimatedNode {
class facebook::react::AnimatedPropsRegistry {
public std::pair<std::unordered_set<std::shared_ptr<const facebook::react::ShadowNodeFamily>>&, facebook::react::SnapshotMap&> getMap(facebook::react::SurfaceId surfaceId);
public void clear(facebook::react::SurfaceId surfaceId);
public void clearOnSurfaceStop(facebook::react::SurfaceId surfaceId);
public void update(const std::unordered_map<facebook::react::SurfaceId, facebook::react::SurfaceUpdates>& surfaceUpdates);
}

Expand All @@ -1545,6 +1546,7 @@ class facebook::react::AnimationBackend : public facebook::react::UIManagerAnima
public using ResumeCallback = std::function<void()>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) override;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) override;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) override;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) override;
Expand Down Expand Up @@ -5219,6 +5221,7 @@ class facebook::react::UIManagerAnimationBackend {
public using Callback = std::function<facebook::react::AnimationMutations(facebook::react::AnimationTimestamp)>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) = 0;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) = 0;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) = 0;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) = 0;
Expand Down Expand Up @@ -13503,4 +13506,4 @@ struct std::hash<facebook::react::jsinspector_modern::UniqueMonostate<key>> {
}


void YGJNIVanilla::registerNatives(JNIEnv* env);
void YGJNIVanilla::registerNatives(JNIEnv* env);
5 changes: 4 additions & 1 deletion scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api
Original file line number Diff line number Diff line change
Expand Up @@ -1535,6 +1535,7 @@ class facebook::react::AnimatedNode {
class facebook::react::AnimatedPropsRegistry {
public std::pair<std::unordered_set<std::shared_ptr<const facebook::react::ShadowNodeFamily>>&, facebook::react::SnapshotMap&> getMap(facebook::react::SurfaceId surfaceId);
public void clear(facebook::react::SurfaceId surfaceId);
public void clearOnSurfaceStop(facebook::react::SurfaceId surfaceId);
public void update(const std::unordered_map<facebook::react::SurfaceId, facebook::react::SurfaceUpdates>& surfaceUpdates);
}

Expand All @@ -1544,6 +1545,7 @@ class facebook::react::AnimationBackend : public facebook::react::UIManagerAnima
public using ResumeCallback = std::function<void()>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) override;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) override;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) override;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) override;
Expand Down Expand Up @@ -5210,6 +5212,7 @@ class facebook::react::UIManagerAnimationBackend {
public using Callback = std::function<facebook::react::AnimationMutations(facebook::react::AnimationTimestamp)>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) = 0;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) = 0;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) = 0;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) = 0;
Expand Down Expand Up @@ -13359,4 +13362,4 @@ struct std::hash<facebook::react::jsinspector_modern::UniqueMonostate<key>> {
}


void YGJNIVanilla::registerNatives(JNIEnv* env);
void YGJNIVanilla::registerNatives(JNIEnv* env);
5 changes: 4 additions & 1 deletion scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api
Original file line number Diff line number Diff line change
Expand Up @@ -4481,6 +4481,7 @@ class facebook::react::AnimatedNode {
class facebook::react::AnimatedPropsRegistry {
public std::pair<std::unordered_set<std::shared_ptr<const facebook::react::ShadowNodeFamily>>&, facebook::react::SnapshotMap&> getMap(facebook::react::SurfaceId surfaceId);
public void clear(facebook::react::SurfaceId surfaceId);
public void clearOnSurfaceStop(facebook::react::SurfaceId surfaceId);
public void update(const std::unordered_map<facebook::react::SurfaceId, facebook::react::SurfaceUpdates>& surfaceUpdates);
}

Expand All @@ -4490,6 +4491,7 @@ class facebook::react::AnimationBackend : public facebook::react::UIManagerAnima
public using ResumeCallback = std::function<void()>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) override;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) override;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) override;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) override;
Expand Down Expand Up @@ -7788,6 +7790,7 @@ class facebook::react::UIManagerAnimationBackend {
public using Callback = std::function<facebook::react::AnimationMutations(facebook::react::AnimationTimestamp)>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) = 0;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) = 0;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) = 0;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) = 0;
Expand Down Expand Up @@ -16099,4 +16102,4 @@ class FB::LazyVector {
public using reference = T;
public using size_type = std::int32_t;
public using value_type = T;
}
}
5 changes: 4 additions & 1 deletion scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api
Original file line number Diff line number Diff line change
Expand Up @@ -4480,6 +4480,7 @@ class facebook::react::AnimatedNode {
class facebook::react::AnimatedPropsRegistry {
public std::pair<std::unordered_set<std::shared_ptr<const facebook::react::ShadowNodeFamily>>&, facebook::react::SnapshotMap&> getMap(facebook::react::SurfaceId surfaceId);
public void clear(facebook::react::SurfaceId surfaceId);
public void clearOnSurfaceStop(facebook::react::SurfaceId surfaceId);
public void update(const std::unordered_map<facebook::react::SurfaceId, facebook::react::SurfaceUpdates>& surfaceUpdates);
}

Expand All @@ -4489,6 +4490,7 @@ class facebook::react::AnimationBackend : public facebook::react::UIManagerAnima
public using ResumeCallback = std::function<void()>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) override;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) override;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) override;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) override;
Expand Down Expand Up @@ -7779,6 +7781,7 @@ class facebook::react::UIManagerAnimationBackend {
public using Callback = std::function<facebook::react::AnimationMutations(facebook::react::AnimationTimestamp)>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) = 0;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) = 0;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) = 0;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) = 0;
Expand Down Expand Up @@ -15965,4 +15968,4 @@ class FB::LazyVector {
public using reference = T;
public using size_type = std::int32_t;
public using value_type = T;
}
}
5 changes: 4 additions & 1 deletion scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api
Original file line number Diff line number Diff line change
Expand Up @@ -864,6 +864,7 @@ class facebook::react::AnimatedNode {
class facebook::react::AnimatedPropsRegistry {
public std::pair<std::unordered_set<std::shared_ptr<const facebook::react::ShadowNodeFamily>>&, facebook::react::SnapshotMap&> getMap(facebook::react::SurfaceId surfaceId);
public void clear(facebook::react::SurfaceId surfaceId);
public void clearOnSurfaceStop(facebook::react::SurfaceId surfaceId);
public void update(const std::unordered_map<facebook::react::SurfaceId, facebook::react::SurfaceUpdates>& surfaceUpdates);
}

Expand All @@ -873,6 +874,7 @@ class facebook::react::AnimationBackend : public facebook::react::UIManagerAnima
public using ResumeCallback = std::function<void()>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) override;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) override;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) override;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) override;
Expand Down Expand Up @@ -3685,6 +3687,7 @@ class facebook::react::UIManagerAnimationBackend {
public using Callback = std::function<facebook::react::AnimationMutations(facebook::react::AnimationTimestamp)>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) = 0;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) = 0;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) = 0;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) = 0;
Expand Down Expand Up @@ -10453,4 +10456,4 @@ struct std::hash<facebook::react::jsinspector_modern::ExecutionContextSelector>
template <size_t key>
struct std::hash<facebook::react::jsinspector_modern::UniqueMonostate<key>> {
public size_t operator()(const facebook::react::jsinspector_modern::UniqueMonostate<key>&) const noexcept;
}
}
5 changes: 4 additions & 1 deletion scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,7 @@ class facebook::react::AnimatedNode {
class facebook::react::AnimatedPropsRegistry {
public std::pair<std::unordered_set<std::shared_ptr<const facebook::react::ShadowNodeFamily>>&, facebook::react::SnapshotMap&> getMap(facebook::react::SurfaceId surfaceId);
public void clear(facebook::react::SurfaceId surfaceId);
public void clearOnSurfaceStop(facebook::react::SurfaceId surfaceId);
public void update(const std::unordered_map<facebook::react::SurfaceId, facebook::react::SurfaceUpdates>& surfaceUpdates);
}

Expand All @@ -872,6 +873,7 @@ class facebook::react::AnimationBackend : public facebook::react::UIManagerAnima
public using ResumeCallback = std::function<void()>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) override;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) override;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) override;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) override;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) override;
Expand Down Expand Up @@ -3676,6 +3678,7 @@ class facebook::react::UIManagerAnimationBackend {
public using Callback = std::function<facebook::react::AnimationMutations(facebook::react::AnimationTimestamp)>;
public virtual facebook::react::CallbackId start(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void clearRegistry(facebook::react::SurfaceId surfaceId) = 0;
public virtual void clearRegistryOnSurfaceStop(facebook::react::SurfaceId surfaceId) = 0;
public virtual void onAnimationFrame(facebook::react::AnimationTimestamp timestamp) = 0;
public virtual void pushAnimationMutations(const facebook::react::UIManagerAnimationBackend::Callback& callback) = 0;
public virtual void registerJSInvoker(std::shared_ptr<facebook::react::CallInvoker> jsInvoker) = 0;
Expand Down Expand Up @@ -10444,4 +10447,4 @@ struct std::hash<facebook::react::jsinspector_modern::ExecutionContextSelector>
template <size_t key>
struct std::hash<facebook::react::jsinspector_modern::UniqueMonostate<key>> {
public size_t operator()(const facebook::react::jsinspector_modern::UniqueMonostate<key>&) const noexcept;
}
}
Loading