@@ -18,73 +18,73 @@ using namespace reanimated;
1818
1919struct MultithreadingModule : jni::JavaClass<MultithreadingModule> {
2020public:
21- __unused static constexpr auto kJavaDescriptor = " Lcom/reactnativemultithreading/MultithreadingModule;" ;
21+ __unused static constexpr auto kJavaDescriptor = " Lcom/reactnativemultithreading/MultithreadingModule;" ;
2222
23- static constexpr auto TAG = " RNMultithreading" ;
23+ static constexpr auto TAG = " RNMultithreading" ;
2424
25- static void registerNatives () {
26- javaClassStatic ()->registerNatives ({
27- makeNativeMethod (" installNative" ,
28- MultithreadingModule::installNative)
29- });
30- }
25+ static void registerNatives () {
26+ javaClassStatic ()->registerNatives ({
27+ makeNativeMethod (" installNative" ,
28+ MultithreadingModule::installNative)
29+ });
30+ }
3131
3232private:
33- static std::shared_ptr<react::JSExecutorFactory> makeJSExecutorFactory () {
34- ThreadScope scope; // JNI needs to attach this thread because this function is being called from a different Thread
33+ static std::shared_ptr<react::JSExecutorFactory> makeJSExecutorFactory () {
34+ ThreadScope scope; // JNI needs to attach this thread because this function is being called from a different Thread
3535
36- __android_log_write (ANDROID_LOG_INFO, TAG, " Calling Java method MultithreadingModule.makeJSExecutor()..." );
37- static const auto cls = javaClassStatic ();
38- static const auto method = cls->getStaticMethod <react::JavaScriptExecutorHolder ()>(" makeJSExecutor" );
39- auto result = method (cls);
40- __android_log_write (ANDROID_LOG_INFO, TAG, " JavaScriptExecutor created! Getting factory..." );
41- return result->cthis ()->getExecutorFactory ();
42- }
36+ __android_log_write (ANDROID_LOG_INFO, TAG, " Calling Java method MultithreadingModule.makeJSExecutor()..." );
37+ static const auto cls = javaClassStatic ();
38+ static const auto method = cls->getStaticMethod <react::JavaScriptExecutorHolder ()>(" makeJSExecutor" );
39+ auto result = method (cls);
40+ __android_log_write (ANDROID_LOG_INFO, TAG, " JavaScriptExecutor created! Getting factory..." );
41+ return result->cthis ()->getExecutorFactory ();
42+ }
4343
44- static void installNative (jni::alias_ref<JClass>,
45- jlong jsiRuntimePointer,
46- jni::alias_ref<facebook::react::CallInvokerHolder::javaobject> jsCallInvokerHolder,
47- jni::alias_ref<AndroidScheduler::javaobject> androidScheduler) {
44+ static void installNative (jni::alias_ref<JClass>,
45+ jlong jsiRuntimePointer,
46+ jni::alias_ref<facebook::react::CallInvokerHolder::javaobject> jsCallInvokerHolder,
47+ jni::alias_ref<AndroidScheduler::javaobject> androidScheduler) {
4848
49- auto runtime = reinterpret_cast <jsi::Runtime*>(jsiRuntimePointer);
49+ auto runtime = reinterpret_cast <jsi::Runtime*>(jsiRuntimePointer);
5050
51- auto jsCallInvoker = jsCallInvokerHolder->cthis ()->getCallInvoker ();
52- auto scheduler = androidScheduler->cthis ()->getScheduler ();
53- scheduler->setJSCallInvoker (jsCallInvoker);
51+ auto jsCallInvoker = jsCallInvokerHolder->cthis ()->getCallInvoker ();
52+ auto scheduler = androidScheduler->cthis ()->getScheduler ();
53+ scheduler->setJSCallInvoker (jsCallInvoker);
5454
55- auto makeScheduler = [scheduler]() -> std::shared_ptr<reanimated::Scheduler> {
56- return scheduler;
57- };
58- auto makeErrorHandler = [](const std::shared_ptr<reanimated::Scheduler>& scheduler_) -> std::shared_ptr<reanimated::ErrorHandler> {
59- return std::make_shared<reanimated::AndroidErrorHandler>(scheduler_);
60- };
61- auto makeJsExecutor = []() -> std::unique_ptr<jsi::Runtime> {
62- __android_log_write (ANDROID_LOG_DEBUG, TAG, " Creating JSExecutorFactory.." );
63- try {
64- std::shared_ptr<react::ExecutorDelegate> delegate = std::shared_ptr<react::ExecutorDelegate>();
65- std::shared_ptr<react::MessageQueueThread> jsQueue = std::shared_ptr<react::MessageQueueThread>();
66- auto jsExecutorFactory = makeJSExecutorFactory ();
67- __android_log_write (ANDROID_LOG_DEBUG, TAG, " Creating JSExecutor.." );
68- auto executor = jsExecutorFactory->createJSExecutor (delegate,
69- jsQueue);
70- auto runtimePointer = static_cast <jsi::Runtime *>(executor->getJavaScriptContext ());
71- __android_log_write (ANDROID_LOG_DEBUG, TAG, " JSExecutor created!" );
72- return std::unique_ptr<jsi::Runtime>(runtimePointer);
73- } catch (std::exception& exc) {
74- __android_log_write (ANDROID_LOG_ERROR, TAG, " Failed to create JSExecutor!" );
75- __android_log_write (ANDROID_LOG_ERROR, TAG, exc.what ());
76- return std::unique_ptr<jsi::Runtime>(); // TODO: Remove this and let the caller handle the exception.
77- }
78- };
79- mrousavy::multithreading::install (*runtime, makeJsExecutor, makeScheduler, makeErrorHandler);
55+ auto makeScheduler = [scheduler]() -> std::shared_ptr<reanimated::Scheduler> {
56+ return scheduler;
57+ };
58+ auto makeErrorHandler = [](const std::shared_ptr<reanimated::Scheduler>& scheduler_) -> std::shared_ptr<reanimated::ErrorHandler> {
59+ return std::make_shared<reanimated::AndroidErrorHandler>(scheduler_);
60+ };
61+ auto makeJsExecutor = []() -> std::unique_ptr<jsi::Runtime> {
62+ __android_log_write (ANDROID_LOG_DEBUG, TAG, " Creating JSExecutorFactory.." );
63+ try {
64+ std::shared_ptr<react::ExecutorDelegate> delegate = std::shared_ptr<react::ExecutorDelegate>();
65+ std::shared_ptr<react::MessageQueueThread> jsQueue = std::shared_ptr<react::MessageQueueThread>();
66+ auto jsExecutorFactory = makeJSExecutorFactory ();
67+ __android_log_write (ANDROID_LOG_DEBUG, TAG, " Creating JSExecutor.." );
68+ auto executor = jsExecutorFactory->createJSExecutor (delegate,
69+ jsQueue);
70+ auto runtimePointer = static_cast <jsi::Runtime *>(executor->getJavaScriptContext ());
71+ __android_log_write (ANDROID_LOG_DEBUG, TAG, " JSExecutor created!" );
72+ return std::unique_ptr<jsi::Runtime>(runtimePointer);
73+ } catch (std::exception& exc) {
74+ __android_log_write (ANDROID_LOG_ERROR, TAG, " Failed to create JSExecutor!" );
75+ __android_log_write (ANDROID_LOG_ERROR, TAG, exc.what ());
76+ return std::unique_ptr<jsi::Runtime>(); // TODO: Remove this and let the caller handle the exception.
77+ }
78+ };
79+ mrousavy::multithreading::install (*runtime, makeJsExecutor, makeScheduler, makeErrorHandler);
8080
81- }
81+ }
8282};
8383
8484JNIEXPORT jint JNICALL JNI_OnLoad (JavaVM *vm, void *) {
85- return facebook::jni::initialize (vm, [] {
86- MultithreadingModule::registerNatives ();
87- });
85+ return facebook::jni::initialize (vm, [] {
86+ MultithreadingModule::registerNatives ();
87+ });
8888}
8989/*
9090To create the Scheduler/AndroidErrorHandler:
0 commit comments