From d7d585f587f96b3229ef0b11462e2b773f758d80 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Sat, 11 Apr 2020 12:12:58 -0700 Subject: [PATCH] Fabric: Controlling DifferentiatorMode via ReactNativeConfig Summary: Now we can control the differentiator mode via MC. Changelog: [Internal] Fabric-specific internal change. Reviewed By: fkgozali Differential Revision: D20978857 fbshipit-source-id: 13264948762f02f874d8d051c873d378062d6db4 --- React/Fabric/Mounting/RCTMountingManager.h | 2 ++ React/Fabric/Mounting/RCTMountingManager.mm | 5 ++++- React/Fabric/RCTSurfacePresenter.mm | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/React/Fabric/Mounting/RCTMountingManager.h b/React/Fabric/Mounting/RCTMountingManager.h index 0e8771b8a8b..eb4ca669c7a 100644 --- a/React/Fabric/Mounting/RCTMountingManager.h +++ b/React/Fabric/Mounting/RCTMountingManager.h @@ -26,6 +26,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, weak) id delegate; @property (nonatomic, strong) RCTComponentViewRegistry *componentViewRegistry; +@property (atomic, assign) BOOL useModernDifferentiatorMode; + /** * Schedule a mounting transaction to be performed on the main thread. * Can be called from any thread. diff --git a/React/Fabric/Mounting/RCTMountingManager.mm b/React/Fabric/Mounting/RCTMountingManager.mm index 712d735b340..1aa7786d859 100644 --- a/React/Fabric/Mounting/RCTMountingManager.mm +++ b/React/Fabric/Mounting/RCTMountingManager.mm @@ -266,7 +266,10 @@ static void RNPerformMountInstructions( SystraceSection s("-[RCTMountingManager performTransaction:]"); RCTAssertMainQueue(); - auto transaction = mountingCoordinator->pullTransaction(DifferentiatorMode::Classic); + auto differentiatorMode = + self.useModernDifferentiatorMode ? DifferentiatorMode::OptimizedMoves : DifferentiatorMode::Classic; + + auto transaction = mountingCoordinator->pullTransaction(differentiatorMode); if (!transaction.has_value()) { return; } diff --git a/React/Fabric/RCTSurfacePresenter.mm b/React/Fabric/RCTSurfacePresenter.mm index 57048acc097..bf110e2e896 100644 --- a/React/Fabric/RCTSurfacePresenter.mm +++ b/React/Fabric/RCTSurfacePresenter.mm @@ -24,6 +24,7 @@ #import #import +#import #import #import #import @@ -299,6 +300,12 @@ static inline LayoutContext RCTGetLayoutContext() RCTScheduler *scheduler = [[RCTScheduler alloc] initWithToolbox:toolbox]; scheduler.delegate = self; + auto reactNativeConfig = _contextContainer->at>("ReactNativeConfig"); + if (reactNativeConfig) { + _mountingManager.useModernDifferentiatorMode = + reactNativeConfig->getBool("react_fabric:enabled_optimized_moves_differ_ios"); + } + return scheduler; }