diff --git a/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h b/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h index 6f8836cab45..4fc25fe73c7 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ConcreteComponentDescriptor.h @@ -156,10 +156,7 @@ class ConcreteComponentDescriptor : public ComponentDescriptor { ShadowNodeFamily::Shared createFamily( const ShadowNodeFamilyFragment& fragment) const override { return std::make_shared( - ShadowNodeFamilyFragment{ - fragment.tag, fragment.surfaceId, fragment.instanceHandle}, - eventDispatcher_, - *this); + fragment, eventDispatcher_, *this); } SharedEventEmitter createEventEmitter( diff --git a/packages/react-native/ReactCommon/react/renderer/core/ShadowNodeFamily.h b/packages/react-native/ReactCommon/react/renderer/core/ShadowNodeFamily.h index ff7e1e67bab..1fefb9532ea 100644 --- a/packages/react-native/ReactCommon/react/renderer/core/ShadowNodeFamily.h +++ b/packages/react-native/ReactCommon/react/renderer/core/ShadowNodeFamily.h @@ -28,14 +28,11 @@ class State; * about a `ShadowNodeFamily`. Pelase define specific purpose containers in * those cases. * - * Note: All of the fields are `const &` references (essentially just raw - * pointers) which means that the Fragment does not copy/store them nor - * retain ownership of them. */ struct ShadowNodeFamilyFragment { const Tag tag; const SurfaceId surfaceId; - const InstanceHandle::Shared& instanceHandle; + const std::shared_ptr instanceHandle; }; /* diff --git a/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp b/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp index d802f24b3a9..1b98aac8ce0 100644 --- a/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp +++ b/packages/react-native/ReactCommon/react/renderer/mounting/ShadowTree.cpp @@ -291,8 +291,8 @@ ShadowTree::ShadowTree( layoutConstraints, layoutContext); - const auto fragment = ShadowNodeFamilyFragment{surfaceId, surfaceId, nullptr}; - auto family = globalRootComponentDescriptor->createFamily(fragment); + auto family = globalRootComponentDescriptor->createFamily( + {surfaceId, surfaceId, nullptr}); auto rootShadowNode = std::static_pointer_cast( globalRootComponentDescriptor->createShadowNode( diff --git a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp index e16fff45294..d9b53b655a9 100644 --- a/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp @@ -76,9 +76,8 @@ std::shared_ptr UIManager::createNode( PropsParserContext propsParserContext{surfaceId, *contextContainer_.get()}; - const auto fragment = - ShadowNodeFamilyFragment{tag, surfaceId, instanceHandle}; - auto family = componentDescriptor.createFamily(fragment); + auto family = + componentDescriptor.createFamily({tag, surfaceId, instanceHandle}); const auto props = componentDescriptor.cloneProps(propsParserContext, nullptr, rawProps); const auto state = componentDescriptor.createInitialState(props, family);