mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Pass RuntimeScheduler to Binding
Summary: changelog: [internal] Reviewed By: ShikaSD Differential Revision: D30487037 fbshipit-source-id: 3956606891a313577fd013ae5c2a9f1f90ac5903
This commit is contained in:
committed by
Facebook GitHub Bot
parent
cf561b4052
commit
f679891bd6
@@ -1360,6 +1360,10 @@ public class ReactInstanceManager {
|
||||
}
|
||||
}
|
||||
|
||||
if (ReactFeatureFlags.enableRuntimeScheduler) {
|
||||
catalystInstance.installRuntimeScheduler();
|
||||
}
|
||||
|
||||
if (mJSIModulePackage != null) {
|
||||
catalystInstance.addJSIModules(
|
||||
mJSIModulePackage.getJSIModules(
|
||||
|
||||
@@ -111,6 +111,10 @@ public interface CatalystInstance
|
||||
|
||||
RuntimeExecutor getRuntimeExecutor();
|
||||
|
||||
RuntimeScheduler getRuntimeScheduler();
|
||||
|
||||
void installRuntimeScheduler();
|
||||
|
||||
void addJSIModules(List<JSIModuleSpec> jsiModules);
|
||||
|
||||
/**
|
||||
|
||||
@@ -558,6 +558,10 @@ public class CatalystInstanceImpl implements CatalystInstance {
|
||||
|
||||
public native RuntimeExecutor getRuntimeExecutor();
|
||||
|
||||
public native RuntimeScheduler getRuntimeScheduler();
|
||||
|
||||
public native void installRuntimeScheduler();
|
||||
|
||||
@Override
|
||||
public void addJSIModules(List<JSIModuleSpec> jsiModules) {
|
||||
mJSIModuleRegistry.registerModules(jsiModules);
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
package com.facebook.react.bridge;
|
||||
|
||||
import com.facebook.jni.HybridData;
|
||||
import com.facebook.proguard.annotations.DoNotStrip;
|
||||
|
||||
/** A Java holder for a C++ RuntimeScheduler. */
|
||||
public class RuntimeScheduler {
|
||||
|
||||
@DoNotStrip private HybridData mHybridData;
|
||||
|
||||
public RuntimeScheduler(HybridData hybridData) {
|
||||
mHybridData = hybridData;
|
||||
}
|
||||
}
|
||||
@@ -9,11 +9,13 @@ package com.facebook.react.fabric;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.facebook.jni.HybridData;
|
||||
import com.facebook.proguard.annotations.DoNotStrip;
|
||||
import com.facebook.react.bridge.NativeMap;
|
||||
import com.facebook.react.bridge.ReadableNativeMap;
|
||||
import com.facebook.react.bridge.RuntimeExecutor;
|
||||
import com.facebook.react.bridge.RuntimeScheduler;
|
||||
import com.facebook.react.bridge.queue.MessageQueueThread;
|
||||
import com.facebook.react.fabric.events.EventBeatManager;
|
||||
import com.facebook.react.fabric.events.EventEmitterWrapper;
|
||||
@@ -37,6 +39,7 @@ public class Binding {
|
||||
|
||||
private native void installFabricUIManager(
|
||||
RuntimeExecutor runtimeExecutor,
|
||||
RuntimeScheduler runtimeScheduler,
|
||||
Object uiManager,
|
||||
EventBeatManager eventBeatManager,
|
||||
MessageQueueThread jsMessageQueueThread,
|
||||
@@ -83,6 +86,7 @@ public class Binding {
|
||||
|
||||
public void register(
|
||||
@NonNull RuntimeExecutor runtimeExecutor,
|
||||
@Nullable RuntimeScheduler runtimeScheduler,
|
||||
@NonNull FabricUIManager fabricUIManager,
|
||||
@NonNull EventBeatManager eventBeatManager,
|
||||
@NonNull MessageQueueThread jsMessageQueueThread,
|
||||
@@ -91,6 +95,7 @@ public class Binding {
|
||||
fabricUIManager.setBinding(this);
|
||||
installFabricUIManager(
|
||||
runtimeExecutor,
|
||||
runtimeScheduler,
|
||||
fabricUIManager,
|
||||
eventBeatManager,
|
||||
jsMessageQueueThread,
|
||||
|
||||
@@ -55,6 +55,7 @@ public class FabricJSIModuleProvider implements JSIModuleProvider<UIManager> {
|
||||
|
||||
binding.register(
|
||||
mReactApplicationContext.getCatalystInstance().getRuntimeExecutor(),
|
||||
mReactApplicationContext.getCatalystInstance().getRuntimeScheduler(),
|
||||
uiManager,
|
||||
eventBeatManager,
|
||||
jsMessageQueueThread,
|
||||
|
||||
@@ -11,7 +11,7 @@ LOCAL_MODULE := fabricjni
|
||||
|
||||
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := libjsi 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 libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry
|
||||
LOCAL_SHARED_LIBRARIES := libjsi 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 libreact_debug libreact_render_mapbuffer libmapbufferjni libreact_render_telemetry libreact_render_runtimescheduler
|
||||
|
||||
LOCAL_STATIC_LIBRARIES :=
|
||||
|
||||
@@ -56,6 +56,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)
|
||||
|
||||
@@ -493,6 +493,7 @@ bool isMapBufferSerializationEnabled() {
|
||||
|
||||
void Binding::installFabricUIManager(
|
||||
jni::alias_ref<JRuntimeExecutor::javaobject> runtimeExecutorHolder,
|
||||
jni::alias_ref<JRuntimeScheduler::javaobject> runtimeSchedulerHolder,
|
||||
jni::alias_ref<jobject> javaUIManager,
|
||||
EventBeatManager *eventBeatManager,
|
||||
jni::alias_ref<JavaMessageQueueThread::javaobject> jsMessageQueueThread,
|
||||
@@ -527,6 +528,17 @@ void Binding::installFabricUIManager(
|
||||
std::make_shared<JMessageQueueThread>(jsMessageQueueThread);
|
||||
auto runtimeExecutor = runtimeExecutorHolder->cthis()->get();
|
||||
|
||||
if (runtimeSchedulerHolder) {
|
||||
auto runtimeScheduler = runtimeSchedulerHolder->cthis()->get();
|
||||
if (runtimeScheduler) {
|
||||
runtimeExecutor =
|
||||
[runtimeScheduler](
|
||||
std::function<void(jsi::Runtime & runtime)> &&callback) {
|
||||
runtimeScheduler->scheduleWork(std::move(callback));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: T31905686 Create synchronous Event Beat
|
||||
jni::global_ref<jobject> localJavaUIManager = javaUIManager_;
|
||||
EventBeat::Factory synchronousBeatFactory =
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <fbjni/fbjni.h>
|
||||
#include <react/jni/JMessageQueueThread.h>
|
||||
#include <react/jni/JRuntimeExecutor.h>
|
||||
#include <react/jni/JRuntimeScheduler.h>
|
||||
#include <react/jni/ReadableNativeMap.h>
|
||||
#include <react/renderer/animations/LayoutAnimationDriver.h>
|
||||
#include <react/renderer/scheduler/Scheduler.h>
|
||||
@@ -105,6 +106,7 @@ class Binding : public jni::HybridClass<Binding>,
|
||||
|
||||
void installFabricUIManager(
|
||||
jni::alias_ref<JRuntimeExecutor::javaobject> runtimeExecutorHolder,
|
||||
jni::alias_ref<JRuntimeScheduler::javaobject> runtimeSchedulerHolder,
|
||||
jni::alias_ref<jobject> javaUIManager,
|
||||
EventBeatManager *eventBeatManager,
|
||||
jni::alias_ref<JavaMessageQueueThread::javaobject> jsMessageQueueThread,
|
||||
|
||||
Reference in New Issue
Block a user