mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
On setting the same state for ShadowNodeFamily, don't mark it as obsolete (#39095)
Summary: During investigation of impact of PR https://github.com/facebook/react-native/pull/38706 on `reanimated` I found out that when: - state reconciliation is turned on - `progressState` in `ShadowTree::tryCommit` quite often returns a new pointer to updated shadow tree - above happened due to `newState->getMostRecentStateIfObsolete()` returning precisely the same ptr as `newState` in `progressState` - this is caused by calling `ShadowNodeFamily::setMostRecentState` with the same state as currently held and marking those states as obsolete This PR adds additional check whether `ShadowNodeFamily::setMostRecentState` is called with the same `state` as currently set and skips setting obsolete flag if that happens. ## Changelog: [INTERNAL][FIXED] Setting the same most recent state for ShadowNodeFamily, doesn't mark it as obsolete Pull Request resolved: https://github.com/facebook/react-native/pull/39095 Test Plan: None Reviewed By: cipolleschi Differential Revision: D48526395 Pulled By: sammy-SC fbshipit-source-id: f77cea2364611a42a3363285b4732f33aae8a0a7
This commit is contained in:
committed by
Facebook GitHub Bot
parent
172e2d0c7e
commit
565e06f8d0
@@ -116,7 +116,7 @@ void ShadowNodeFamily::setMostRecentState(State::Shared const &state) const {
|
||||
* Nodes (the evolution of nodes is not linear), however, we never back out
|
||||
* states (they progress linearly).
|
||||
*/
|
||||
if (state && state->isObsolete_) {
|
||||
if (state && (state->isObsolete_ || state == mostRecentState_)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user