diff --git a/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp b/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp index fead649c5ed..e022b69309e 100644 --- a/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp +++ b/ReactCommon/react/renderer/scheduler/SurfaceHandler.cpp @@ -68,12 +68,16 @@ void SurfaceHandler::start() const noexcept { parameters = parameters_; } - link_.shadowTree = &link_.uiManager->startSurface( + auto shadowTree = std::make_unique( parameters.surfaceId, - parameters.moduleName, - parameters.props, parameters.layoutConstraints, - parameters.layoutContext); + parameters.layoutContext, + *link_.uiManager); + + link_.shadowTree = shadowTree.get(); + + link_.uiManager->startSurface( + std::move(shadowTree), parameters.moduleName, parameters.props); link_.status = Status::Running; diff --git a/ReactCommon/react/renderer/uimanager/UIManager.cpp b/ReactCommon/react/renderer/uimanager/UIManager.cpp index 1ede96f843c..5a8044b6ee1 100644 --- a/ReactCommon/react/renderer/uimanager/UIManager.cpp +++ b/ReactCommon/react/renderer/uimanager/UIManager.cpp @@ -146,17 +146,13 @@ void UIManager::setIsJSResponder( } } -ShadowTree const &UIManager::startSurface( - SurfaceId surfaceId, +void UIManager::startSurface( + ShadowTree::Unique &&shadowTree, std::string const &moduleName, - folly::dynamic const &props, - LayoutConstraints const &layoutConstraints, - LayoutContext const &layoutContext) const { + folly::dynamic const &props) const { SystraceSection s("UIManager::startSurface"); - auto shadowTree = std::make_unique( - surfaceId, layoutConstraints, layoutContext, *this); - auto shadowTreePointer = shadowTree.get(); + auto surfaceId = shadowTree->getSurfaceId(); shadowTreeRegistry_.add(std::move(shadowTree)); runtimeExecutor_([=](jsi::Runtime &runtime) { @@ -167,8 +163,6 @@ ShadowTree const &UIManager::startSurface( uiManagerBinding->startSurface(runtime, surfaceId, moduleName, props); }); - - return *shadowTreePointer; } ShadowTree::Unique UIManager::stopSurface(SurfaceId surfaceId) const { diff --git a/ReactCommon/react/renderer/uimanager/UIManager.h b/ReactCommon/react/renderer/uimanager/UIManager.h index 723b7a23a6d..a6fa5b7db88 100644 --- a/ReactCommon/react/renderer/uimanager/UIManager.h +++ b/ReactCommon/react/renderer/uimanager/UIManager.h @@ -85,12 +85,10 @@ class UIManager final : public ShadowTreeDelegate { #pragma mark - Surface Start & Stop - ShadowTree const &startSurface( - SurfaceId surfaceId, + void startSurface( + ShadowTree::Unique &&shadowTree, std::string const &moduleName, - folly::dynamic const &props, - LayoutConstraints const &layoutConstraints, - LayoutContext const &layoutContext) const; + folly::dynamic const &props) const; ShadowTree::Unique stopSurface(SurfaceId surfaceId) const;