Skip to content

Commit 6ff500d

Browse files
sammy-SCfacebook-github-bot
authored andcommitted
Stop render callback on destruction to prevent crash (#51558)
Summary: Pull Request resolved: #51558 changelog: [internal] we must call stopRenderCallbackIfNeeded to prevent UI tick from being called when `NativeAnimatedNodesManager` is deallocated. Reviewed By: mdvacca Differential Revision: D75140890 fbshipit-source-id: 9ad32956a877f9ee8256790ba32cb5982a5b0c2f
1 parent a633d93 commit 6ff500d

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

packages/react-native/ReactCxxPlatform/react/renderer/animated/NativeAnimatedNodesManager.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ NativeAnimatedNodesManager::NativeAnimatedNodesManager(
6565
startOnRenderCallback_(std::move(startOnRenderCallback)),
6666
stopOnRenderCallback_(std::move(stopOnRenderCallback)) {}
6767

68+
NativeAnimatedNodesManager::~NativeAnimatedNodesManager() noexcept {
69+
stopRenderCallbackIfNeeded();
70+
}
71+
6872
std::optional<double> NativeAnimatedNodesManager::getValue(Tag tag) {
6973
auto node = getAnimatedNode<ValueAnimatedNode>(tag);
7074
if (node) {
@@ -466,7 +470,7 @@ void NativeAnimatedNodesManager::startRenderCallbackIfNeeded() {
466470
}
467471
}
468472

469-
void NativeAnimatedNodesManager::stopRenderCallbackIfNeeded() {
473+
void NativeAnimatedNodesManager::stopRenderCallbackIfNeeded() noexcept {
470474
if (stopOnRenderCallback_) {
471475
stopOnRenderCallback_();
472476
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class NativeAnimatedNodesManager
5757
StartOnRenderCallback&& startOnRenderCallback = nullptr,
5858
StopOnRenderCallback&& stopOnRenderCallback = nullptr) noexcept;
5959

60-
~NativeAnimatedNodesManager() = default;
60+
~NativeAnimatedNodesManager() noexcept;
6161

6262
template <
6363
typename T,
@@ -173,7 +173,7 @@ class NativeAnimatedNodesManager
173173
bool isOnRenderThread() const;
174174

175175
private:
176-
void stopRenderCallbackIfNeeded();
176+
void stopRenderCallbackIfNeeded() noexcept;
177177

178178
bool onAnimationFrame(uint64_t timestamp);
179179

0 commit comments

Comments
 (0)