From 741b4d442168a4e19e6c5b9e43081f0e87528460 Mon Sep 17 00:00:00 2001 From: Samuel Susla Date: Tue, 15 Jun 2021 17:34:08 -0700 Subject: [PATCH] Remove RuntimeScheduler from SchedulerToolbox Summary: Changelog: [internal] Remove `RuntimeScheduler` from `SchedulerToolbox` and all of its uses. `RuntimeScheduler` needs to be allocated before `Scheduler` and therefore its presence in the toolbox is redundant. Reviewed By: JoshuaGross Differential Revision: D29134769 fbshipit-source-id: fa00c5dcc4b565d6941e6d742c6aefade37b31c4 --- React/Fabric/RCTSurfacePresenter.mm | 20 +++++++++---------- .../com/facebook/react/fabric/jni/Binding.cpp | 14 ------------- .../react/renderer/scheduler/Scheduler.cpp | 8 +------- .../renderer/scheduler/SchedulerToolbox.h | 2 -- 4 files changed, 10 insertions(+), 34 deletions(-) diff --git a/React/Fabric/RCTSurfacePresenter.mm b/React/Fabric/RCTSurfacePresenter.mm index 64b5bc4937c..5d20142f7a3 100644 --- a/React/Fabric/RCTSurfacePresenter.mm +++ b/React/Fabric/RCTSurfacePresenter.mm @@ -282,16 +282,14 @@ static BackgroundExecutor RCTGetBackgroundExecutor() toolbox.contextContainer = _contextContainer; toolbox.componentRegistryFactory = componentRegistryFactory; - auto runtimeScheduler = _contextContainer->find>("RuntimeScheduler"); - if (runtimeScheduler.hasValue()) { - auto lockedRuntimeScheduler = runtimeScheduler.value().lock(); - if (lockedRuntimeScheduler) { - lockedRuntimeScheduler->setEnableYielding( - reactNativeConfig->getBool("react_native_new_architecture:runtimescheduler_enable_yielding_ios")); - runtimeExecutor = [lockedRuntimeScheduler](std::function &&callback) { - lockedRuntimeScheduler->scheduleWork(std::move(callback)); - }; - } + auto weakRuntimeScheduler = _contextContainer->find>("RuntimeScheduler"); + auto runtimeScheduler = weakRuntimeScheduler.hasValue() ? weakRuntimeScheduler.value().lock() : nullptr; + if (runtimeScheduler) { + runtimeScheduler->setEnableYielding( + reactNativeConfig->getBool("react_native_new_architecture:runtimescheduler_enable_yielding_ios")); + runtimeExecutor = [runtimeScheduler](std::function &&callback) { + runtimeScheduler->scheduleWork(std::move(callback)); + }; } toolbox.runtimeExecutor = runtimeExecutor; @@ -306,7 +304,7 @@ static BackgroundExecutor RCTGetBackgroundExecutor() } toolbox.synchronousEventBeatFactory = - [runtimeExecutor, runtimeScheduler = toolbox.runtimeScheduler](EventBeat::SharedOwnerBox const &ownerBox) { + [runtimeExecutor, runtimeScheduler = runtimeScheduler](EventBeat::SharedOwnerBox const &ownerBox) { auto runLoopObserver = std::make_unique(RunLoopObserver::Activity::BeforeWaiting, ownerBox->owner); return std::make_unique(std::move(runLoopObserver), runtimeExecutor, runtimeScheduler); diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp index 9b6215596cf..cb2179bc6fb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -501,18 +500,6 @@ void Binding::installFabricUIManager( auto sharedJSMessageQueueThread = std::make_shared(jsMessageQueueThread); auto runtimeExecutor = runtimeExecutorHolder->cthis()->get(); - std::shared_ptr runtimeScheduler; - - if (config->getBool("react_fabric:enable_runtimescheduler_android")) { - runtimeScheduler = std::make_shared(runtimeExecutor); - - auto originalRuntimeExecutor = runtimeExecutorHolder->cthis()->get(); - runtimeExecutor = - [originalRuntimeExecutor, runtimeScheduler]( - std::function &&callback) { - runtimeScheduler->scheduleWork(std::move(callback)); - }; - } auto enableV2AsynchronousEventBeat = config->getBool("react_fabric:enable_asynchronous_event_beat_v2_android"); @@ -571,7 +558,6 @@ void Binding::installFabricUIManager( toolbox.contextContainer = contextContainer; toolbox.componentRegistryFactory = componentsRegistry->buildRegistryFunction; toolbox.runtimeExecutor = runtimeExecutor; - toolbox.runtimeScheduler = runtimeScheduler; toolbox.synchronousEventBeatFactory = synchronousBeatFactory; toolbox.asynchronousEventBeatFactory = asynchronousBeatFactory; diff --git a/ReactCommon/react/renderer/scheduler/Scheduler.cpp b/ReactCommon/react/renderer/scheduler/Scheduler.cpp index b73db19bf98..55a31c4a92f 100644 --- a/ReactCommon/react/renderer/scheduler/Scheduler.cpp +++ b/ReactCommon/react/renderer/scheduler/Scheduler.cpp @@ -105,17 +105,11 @@ Scheduler::Scheduler( runtimeExecutor_([uiManager, asyncMeasure, - runtimeExecutor = runtimeExecutor_, - runtimeScheduler = schedulerToolbox.runtimeScheduler]( - jsi::Runtime &runtime) { + runtimeExecutor = runtimeExecutor_](jsi::Runtime &runtime) { auto uiManagerBinding = UIManagerBinding::createAndInstallIfNeeded(runtime, runtimeExecutor); uiManagerBinding->attach(uiManager); uiManagerBinding->setEnableAsyncMeasure(asyncMeasure); - if (runtimeScheduler) { - RuntimeSchedulerBinding::createAndInstallIfNeeded( - runtime, runtimeScheduler); - } }); auto componentDescriptorRegistryKey = diff --git a/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h b/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h index a4d8ddabdd6..c6c2c179e0e 100644 --- a/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h +++ b/ReactCommon/react/renderer/scheduler/SchedulerToolbox.h @@ -43,8 +43,6 @@ struct SchedulerToolbox final { */ RuntimeExecutor runtimeExecutor; - std::shared_ptr runtimeScheduler; - /* * Represent connections with a platform-specific UI run loops. */