Funnel All Fabric calls to RuntimeExecutor to RuntimeScheduler

Summary:
Changelog: [internal]

This diff moves all calls to RuntimeExecutor to RuntimeScheduler. The calls are still immediately dispatched. Timing of events will not change.

The goal of this diff is to prepare infrastructure for Concurrent Mode.

Reviewed By: JoshuaGross

Differential Revision: D27938536

fbshipit-source-id: 750b0e21e0ecbd7aa5a14885ebc70aae82203bd4
This commit is contained in:
Samuel Susla
2021-05-13 08:03:29 -07:00
committed by Facebook GitHub Bot
parent 9b3c12dc87
commit 831e2d41ab
3 changed files with 17 additions and 1 deletions
@@ -11,7 +11,7 @@ LOCAL_MODULE := fabricjni
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_SHARED_LIBRARIES := libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput librrc_picker libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry
LOCAL_SHARED_LIBRARIES := libreactconfig librrc_slider librrc_progressbar librrc_switch librrc_modal libyoga libglog libfb libfbjni libglog_init libfolly_json libfolly_futures libreact_render_mounting libreactnativeutilsjni libreact_utils libreact_render_debug libreact_render_graphics libreact_render_core react_render_componentregistry librrc_view librrc_unimplementedview librrc_root librrc_scrollview libbetter libreact_render_attributedstring libreact_render_uimanager libreact_render_templateprocessor libreact_render_scheduler libreact_render_animations libreact_render_imagemanager libreact_render_textlayoutmanager libreact_codegen_rncore rrc_text librrc_image librrc_textinput librrc_picker libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry libreact_render_runtimescheduler
LOCAL_STATIC_LIBRARIES :=
@@ -57,6 +57,7 @@ $(call import-module,react/renderer/graphics)
$(call import-module,react/renderer/imagemanager)
$(call import-module,react/renderer/mapbuffer)
$(call import-module,react/renderer/mounting)
$(call import-module,react/renderer/runtimescheduler)
$(call import-module,react/renderer/scheduler)
$(call import-module,react/renderer/templateprocessor)
$(call import-module,react/renderer/textlayoutmanager)
@@ -34,6 +34,7 @@ rn_xplat_cxx_library(
react_native_xplat_target("react/renderer/scheduler:scheduler"),
react_native_xplat_target("react/renderer/componentregistry:componentregistry"),
react_native_xplat_target("react/renderer/components/scrollview:scrollview"),
react_native_xplat_target("react/renderer/runtimescheduler:runtimescheduler"),
react_native_xplat_target("runtimeexecutor:runtimeexecutor"),
react_native_target("jni/react/jni:jni"),
"//xplat/fbsystrace:fbsystrace",
@@ -25,6 +25,7 @@
#include <react/renderer/core/EventEmitter.h>
#include <react/renderer/core/conversions.h>
#include <react/renderer/debug/SystraceSection.h>
#include <react/renderer/runtimescheduler/RuntimeScheduler.h>
#include <react/renderer/scheduler/Scheduler.h>
#include <react/renderer/scheduler/SchedulerDelegate.h>
#include <react/renderer/scheduler/SchedulerToolbox.h>
@@ -499,6 +500,18 @@ void Binding::installFabricUIManager(
auto sharedJSMessageQueueThread =
std::make_shared<JMessageQueueThread>(jsMessageQueueThread);
auto runtimeExecutor = runtimeExecutorHolder->cthis()->get();
std::shared_ptr<RuntimeScheduler> runtimeScheduler;
if (config->getBool("react_fabric:enable_runtimescheduler_android")) {
runtimeScheduler = std::make_shared<RuntimeScheduler>(runtimeExecutor);
auto originalRuntimeExecutor = runtimeExecutorHolder->cthis()->get();
runtimeExecutor =
[originalRuntimeExecutor, runtimeScheduler](
std::function<void(jsi::Runtime & runtime)> &&callback) {
runtimeScheduler->scheduleWork(std::move(callback));
};
}
auto enableV2AsynchronousEventBeat =
config->getBool("react_fabric:enable_asynchronous_event_beat_v2_android");
@@ -551,6 +564,7 @@ void Binding::installFabricUIManager(
toolbox.contextContainer = contextContainer;
toolbox.componentRegistryFactory = componentsRegistry->buildRegistryFunction;
toolbox.runtimeExecutor = runtimeExecutor;
toolbox.runtimeScheduler = runtimeScheduler;
toolbox.synchronousEventBeatFactory = synchronousBeatFactory;
toolbox.asynchronousEventBeatFactory = asynchronousBeatFactory;