Skip to content

Commit 2b992a0

Browse files
sbuggaymeta-codesync[bot]
authored andcommitted
Flush created animated nodes before handling events (#57656)
Summary: Pull Request resolved: #57656 Changelog: [Internal] View event handlers can run synchronously before NativeAnimated nodes created on the async path have been flushed into the active graph. Flush pending async-created nodes on the render thread before evaluating view-driven animation events, so focus-driven animations can resolve their value nodes on the first native focus event instead of needing another runloop/event. Reviewed By: zeyap Differential Revision: D111257551 fbshipit-source-id: d5b7322cfce90b820ccf06422f1c830255bea3b3
1 parent 72432a2 commit 2b992a0

10 files changed

Lines changed: 11 additions & 2 deletions

File tree

packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,15 +208,15 @@ class NativeAnimatedNodesManager : public std::enable_shared_from_this<NativeAni
208208

209209
bool isOnRenderThread() const noexcept;
210210

211+
void flushAnimatedNodesCreatedAsync() noexcept;
212+
211213
void resolvePlatformColor(SurfaceId surfaceId, const RawValue &value, SharedColor &result) const;
212214

213215
private:
214216
void stopRenderCallbackIfNeeded(bool isAsync) noexcept;
215217

216218
bool onAnimationFrame(double timestamp);
217219

218-
void flushAnimatedNodesCreatedAsync() noexcept;
219-
220220
bool isAnimationUpdateNeeded() const noexcept;
221221

222222
void stopAnimationsForNode(Tag nodeTag);

scripts/cxx-api/api-snapshots/ReactAndroidDebugCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3523,6 +3523,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
35233523
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
35243524
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
35253525
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
3526+
public void flushAnimatedNodesCreatedAsync() noexcept;
35263527
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
35273528
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
35283529
public void onRender();

scripts/cxx-api/api-snapshots/ReactAndroidNewarchCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3407,6 +3407,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
34073407
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
34083408
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
34093409
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
3410+
public void flushAnimatedNodesCreatedAsync() noexcept;
34103411
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
34113412
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
34123413
public void onRender();

scripts/cxx-api/api-snapshots/ReactAndroidReleaseCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3520,6 +3520,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
35203520
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
35213521
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
35223522
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
3523+
public void flushAnimatedNodesCreatedAsync() noexcept;
35233524
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
35243525
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
35253526
public void onRender();

scripts/cxx-api/api-snapshots/ReactAppleDebugCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5756,6 +5756,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
57565756
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
57575757
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
57585758
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
5759+
public void flushAnimatedNodesCreatedAsync() noexcept;
57595760
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
57605761
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
57615762
public void onRender();

scripts/cxx-api/api-snapshots/ReactAppleNewarchCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5668,6 +5668,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
56685668
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
56695669
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
56705670
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
5671+
public void flushAnimatedNodesCreatedAsync() noexcept;
56715672
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
56725673
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
56735674
public void onRender();

scripts/cxx-api/api-snapshots/ReactAppleReleaseCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5753,6 +5753,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
57535753
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
57545754
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
57555755
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
5756+
public void flushAnimatedNodesCreatedAsync() noexcept;
57565757
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
57575758
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
57585759
public void onRender();

scripts/cxx-api/api-snapshots/ReactCommonDebugCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2365,6 +2365,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
23652365
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
23662366
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
23672367
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
2368+
public void flushAnimatedNodesCreatedAsync() noexcept;
23682369
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
23692370
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
23702371
public void onRender();

scripts/cxx-api/api-snapshots/ReactCommonNewarchCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2289,6 +2289,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
22892289
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
22902290
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
22912291
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
2292+
public void flushAnimatedNodesCreatedAsync() noexcept;
22922293
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
22932294
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
22942295
public void onRender();

scripts/cxx-api/api-snapshots/ReactCommonReleaseCxx.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2362,6 +2362,7 @@ class facebook::react::NativeAnimatedNodesManager : public std::enable_shared_fr
23622362
public void dropAnimatedNode(facebook::react::Tag tag) noexcept;
23632363
public void extractAnimatedNodeOffsetOp(facebook::react::Tag tag);
23642364
public void flattenAnimatedNodeOffset(facebook::react::Tag tag);
2365+
public void flushAnimatedNodesCreatedAsync() noexcept;
23652366
public void insertMutations(std::unordered_map<facebook::react::Tag, std::pair<facebook::react::ShadowNodeFamily::Weak, folly::dynamic>>& updates, facebook::react::AnimationMutations& mutations, facebook::react::AnimatedPropsBuilder& propsBuilder, bool hasLayoutUpdates = false);
23662367
public void onManagedPropsRemoved(facebook::react::Tag tag) noexcept;
23672368
public void onRender();

0 commit comments

Comments
 (0)