diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.cpp b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.cpp index b1f430a89cd9..3e81bdee99e8 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.cpp +++ b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.cpp @@ -55,7 +55,6 @@ NativeReanimatedModule::NativeReanimatedModule( const std::shared_ptr &nativeWorkletsModule, jsi::Runtime &rnRuntime, const std::shared_ptr &jsScheduler, - const std::shared_ptr &jsQueue, const std::shared_ptr &uiScheduler, const PlatformDepMethodsHolder &platformDepMethodsHolder, const bool isBridgeless, @@ -64,14 +63,13 @@ NativeReanimatedModule::NativeReanimatedModule( isBridgeless ? nullptr : jsScheduler->getJSCallInvoker()), isBridgeless_(isBridgeless), isReducedMotion_(isReducedMotion), - jsQueue_(jsQueue), nativeWorkletsModule_(nativeWorkletsModule), jsScheduler_(jsScheduler), uiScheduler_(uiScheduler), valueUnpackerCode_(nativeWorkletsModule->getValueUnpackerCode()), uiWorkletRuntime_(std::make_shared( rnRuntime, - jsQueue, + nativeWorkletsModule->getJSQueue(), jsScheduler_, "Reanimated UI runtime", true /* supportsLocking */, @@ -233,7 +231,7 @@ jsi::Value NativeReanimatedModule::createWorkletRuntime( const jsi::Value &initializer) { auto workletRuntime = std::make_shared( rt, - jsQueue_, + nativeWorkletsModule_->getJSQueue(), jsScheduler_, name.asString(rt).utf8(rt), false /* supportsLocking */, diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.h b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.h index 29bfecc7a638..ba5e8deee298 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.h +++ b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.h @@ -36,7 +36,6 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec { const std::shared_ptr &nativeWorkletsModule, jsi::Runtime &rnRuntime, const std::shared_ptr &jsScheduler, - const std::shared_ptr &jsQueue, const std::shared_ptr &uiScheduler, const PlatformDepMethodsHolder &platformDepMethodsHolder, const bool isBridgeless, @@ -194,7 +193,6 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec { const bool isBridgeless_; const bool isReducedMotion_; - const std::shared_ptr jsQueue_; const std::shared_ptr nativeWorkletsModule_; const std::shared_ptr jsScheduler_; const std::shared_ptr uiScheduler_; diff --git a/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.cpp b/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.cpp index 80270752948a..5189d0aa5612 100644 --- a/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.cpp +++ b/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.cpp @@ -18,9 +18,12 @@ using namespace facebook; namespace worklets { -NativeWorkletsModule::NativeWorkletsModule(const std::string &valueUnpackerCode) +NativeWorkletsModule::NativeWorkletsModule( + const std::string &valueUnpackerCode, + const std::shared_ptr &jsQueue) : NativeWorkletsModuleSpec(nullptr), - valueUnpackerCode_(valueUnpackerCode) {} + valueUnpackerCode_(valueUnpackerCode), + jsQueue_(jsQueue) {} NativeWorkletsModule::~NativeWorkletsModule() {} diff --git a/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h b/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h index 5912056fb168..13eb581337c8 100644 --- a/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h +++ b/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h @@ -3,13 +3,17 @@ #include #include #include +#include +#include #include namespace worklets { class NativeWorkletsModule : public NativeWorkletsModuleSpec { public: - explicit NativeWorkletsModule(const std::string &valueUnpackerCode); + explicit NativeWorkletsModule( + const std::string &valueUnpackerCode, + const std::shared_ptr &jsQueue); ~NativeWorkletsModule(); @@ -23,8 +27,13 @@ class NativeWorkletsModule : public NativeWorkletsModuleSpec { return valueUnpackerCode_; } + [[nodiscard]] inline std::shared_ptr getJSQueue() const { + return jsQueue_; + } + private: const std::string valueUnpackerCode_; + const std::shared_ptr jsQueue_; #ifndef NDEBUG SingleInstanceChecker singleInstanceChecker_; #endif // NDEBUG diff --git a/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp b/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp index 42b1f21ce14b..61fd25338fc0 100644 --- a/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp +++ b/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp @@ -14,7 +14,6 @@ #include #include #include -#include #include #include @@ -33,8 +32,7 @@ NativeProxy::NativeProxy( jsi::Runtime *rnRuntime, const std::shared_ptr &jsCallInvoker, const std::shared_ptr &uiScheduler, - jni::global_ref layoutAnimations, - jni::alias_ref messageQueueThread + jni::global_ref layoutAnimations #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -47,7 +45,6 @@ NativeProxy::NativeProxy( nativeWorkletsModule, *rnRuntime, std::make_shared(*rnRuntime, jsCallInvoker), - std::make_shared(messageQueueThread), uiScheduler, getPlatformDependentMethods(), /* isBridgeless */ false, @@ -66,7 +63,6 @@ NativeProxy::NativeProxy( RuntimeExecutor runtimeExecutor, const std::shared_ptr &uiScheduler, jni::global_ref layoutAnimations, - jni::alias_ref messageQueueThread, jni::alias_ref fabricUIManager) : javaPart_(jni::make_global(jThis)), @@ -75,7 +71,6 @@ NativeProxy::NativeProxy( nativeWorkletsModule, *rnRuntime, std::make_shared(*rnRuntime, runtimeExecutor), - std::make_shared(messageQueueThread), uiScheduler, getPlatformDependentMethods(), /* isBridgeless */ true, @@ -119,8 +114,7 @@ jni::local_ref NativeProxy::initHybrid( jni::alias_ref jsCallInvokerHolder, jni::alias_ref androidUiScheduler, - jni::alias_ref layoutAnimations, - jni::alias_ref messageQueueThread + jni::alias_ref layoutAnimations #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -137,10 +131,9 @@ jni::local_ref NativeProxy::initHybrid( (jsi::Runtime *)jsContext, jsCallInvoker, uiScheduler, - make_global(layoutAnimations), - messageQueueThread + make_global(layoutAnimations) #ifdef RCT_NEW_ARCH_ENABLED - , + , fabricUIManager #endif ); @@ -154,7 +147,6 @@ jni::local_ref NativeProxy::initHybridBridgeless( jni::alias_ref runtimeExecutorHolder, jni::alias_ref androidUiScheduler, jni::alias_ref layoutAnimations, - jni::alias_ref messageQueueThread, jni::alias_ref fabricUIManager) { auto uiScheduler = androidUiScheduler->cthis()->getUIScheduler(); @@ -168,7 +160,6 @@ jni::local_ref NativeProxy::initHybridBridgeless( runtimeExecutor, uiScheduler, make_global(layoutAnimations), - messageQueueThread, fabricUIManager); } #endif // RCT_NEW_ARCH_ENABLED diff --git a/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h b/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h index 1f2ac757987b..ea2507296441 100644 --- a/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h +++ b/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h @@ -12,7 +12,6 @@ #include #include #include -#include #include #include @@ -155,8 +154,7 @@ class NativeProxy : public jni::HybridClass { jni::alias_ref jsCallInvokerHolder, jni::alias_ref androidUiScheduler, - jni::alias_ref layoutAnimations, - jni::alias_ref messageQueueThread + jni::alias_ref layoutAnimations #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -172,7 +170,6 @@ class NativeProxy : public jni::HybridClass { jni::alias_ref runtimeExecutorHolder, jni::alias_ref androidUiScheduler, jni::alias_ref layoutAnimations, - jni::alias_ref messageQueueThread, jni::alias_ref fabricUIManager); #endif // RCT_NEW_ARCH_ENABLED @@ -282,8 +279,7 @@ class NativeProxy : public jni::HybridClass { jsi::Runtime *rnRuntime, const std::shared_ptr &jsCallInvoker, const std::shared_ptr &uiScheduler, - jni::global_ref layoutAnimations, - jni::alias_ref messageQueueThread + jni::global_ref layoutAnimations #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -299,7 +295,6 @@ class NativeProxy : public jni::HybridClass { RuntimeExecutor runtimeExecutor, const std::shared_ptr &uiScheduler, jni::global_ref layoutAnimations, - jni::alias_ref messageQueueThread, jni::alias_ref fabricUIManager); diff --git a/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.cpp b/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.cpp index 6be7b73349d1..833c5a36cbf1 100644 --- a/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.cpp +++ b/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.cpp @@ -20,19 +20,23 @@ using namespace react; WorkletsModule::WorkletsModule( jni::alias_ref jThis, jsi::Runtime *rnRuntime, - const std::string &valueUnpackerCode) + const std::string &valueUnpackerCode, + jni::alias_ref messageQueueThread) : javaPart_(jni::make_global(jThis)), rnRuntime_(rnRuntime), - nativeWorkletsModule_( - std::make_shared(valueUnpackerCode)) { + nativeWorkletsModule_(std::make_shared( + valueUnpackerCode, + std::make_shared(messageQueueThread))) { RNRuntimeWorkletDecorator::decorate(*rnRuntime_, nativeWorkletsModule_); } jni::local_ref WorkletsModule::initHybrid( jni::alias_ref jThis, jlong jsContext, - const std::string &valueUnpackerCode) { - return makeCxxInstance(jThis, (jsi::Runtime *)jsContext, valueUnpackerCode); + const std::string &valueUnpackerCode, + jni::alias_ref messageQueueThread) { + return makeCxxInstance( + jThis, (jsi::Runtime *)jsContext, valueUnpackerCode, messageQueueThread); } void WorkletsModule::registerNatives() { diff --git a/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.h b/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.h index 349853b1edb3..e367780de3ca 100644 --- a/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.h +++ b/packages/react-native-reanimated/android/src/main/cpp/worklets/android/WorkletsModule.h @@ -31,7 +31,8 @@ class WorkletsModule : public jni::HybridClass { static jni::local_ref initHybrid( jni::alias_ref jThis, jlong jsContext, - const std::string &valueUnpackerCode); + const std::string &valueUnpackerCode, + jni::alias_ref messageQueueThread); static void registerNatives(); @@ -48,7 +49,8 @@ class WorkletsModule : public jni::HybridClass { explicit WorkletsModule( jni::alias_ref jThis, jsi::Runtime *rnRuntime, - const std::string &valueUnpackerCode); + const std::string &valueUnpackerCode, + jni::alias_ref messageQueueThread); }; } // namespace worklets diff --git a/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsModule.java b/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsModule.java index 2da67792f66f..31c74a6e5602 100644 --- a/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsModule.java +++ b/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsModule.java @@ -5,10 +5,12 @@ import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.common.annotations.FrameworkAPI; import com.facebook.react.module.annotations.ReactModule; import com.facebook.soloader.SoLoader; import com.swmansion.reanimated.NativeWorkletsModuleSpec; +import com.swmansion.reanimated.ReanimatedMessageQueueThread; import java.util.Objects; @ReactModule(name = WorkletsModule.NAME) @@ -28,11 +30,15 @@ protected HybridData getHybridData() { return mHybridData; } + private final ReanimatedMessageQueueThread mMessageQueueThread = + new ReanimatedMessageQueueThread(); + /** * @noinspection JavaJniMissingFunction */ @OptIn(markerClass = FrameworkAPI.class) - private native HybridData initHybrid(long jsContext, String valueUnpackerCode); + private native HybridData initHybrid( + long jsContext, String valueUnpackerCode, MessageQueueThread messageQueueThread); public WorkletsModule(ReactApplicationContext reactContext) { super(reactContext); @@ -44,7 +50,7 @@ public boolean installTurboModule(String valueUnpackerCode) { var context = getReactApplicationContext(); var jsContext = Objects.requireNonNull(context.getJavaScriptContextHolder()).get(); - mHybridData = initHybrid(jsContext, valueUnpackerCode); + mHybridData = initHybrid(jsContext, valueUnpackerCode, mMessageQueueThread); return true; } diff --git a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/74/com/swmansion/reanimated/NativeProxy.java b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/74/com/swmansion/reanimated/NativeProxy.java index 1f732ab91f1e..5cd43091f229 100644 --- a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/74/com/swmansion/reanimated/NativeProxy.java +++ b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/74/com/swmansion/reanimated/NativeProxy.java @@ -5,7 +5,6 @@ import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.RuntimeExecutor; -import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.common.annotations.FrameworkAPI; import com.facebook.react.fabric.FabricUIManager; import com.facebook.react.turbomodule.core.CallInvokerHolderImpl; @@ -33,8 +32,6 @@ public class NativeProxy extends NativeProxyCommon { LayoutAnimations LayoutAnimations = new LayoutAnimations(context); - ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread(); - if (context.isBridgeless()) { RuntimeExecutor runtimeExecutor = context.getRuntimeExecutor(); mHybridData = @@ -44,7 +41,6 @@ public class NativeProxy extends NativeProxyCommon { runtimeExecutor, mAndroidUIScheduler, LayoutAnimations, - messageQueueThread, fabricUIManager); } else { CallInvokerHolderImpl callInvokerHolder = @@ -56,7 +52,6 @@ public class NativeProxy extends NativeProxyCommon { callInvokerHolder, mAndroidUIScheduler, LayoutAnimations, - messageQueueThread, fabricUIManager); } prepareLayoutAnimations(LayoutAnimations); @@ -72,7 +67,6 @@ private native HybridData initHybrid( CallInvokerHolderImpl jsCallInvokerHolder, AndroidUIScheduler androidUIScheduler, LayoutAnimations LayoutAnimations, - MessageQueueThread messageQueueThread, FabricUIManager fabricUIManager); private native HybridData initHybridBridgeless( @@ -81,7 +75,6 @@ private native HybridData initHybridBridgeless( RuntimeExecutor runtimeExecutor, AndroidUIScheduler androidUIScheduler, LayoutAnimations LayoutAnimations, - MessageQueueThread messageQueueThread, FabricUIManager fabricUIManager); public native boolean isAnyHandlerWaitingForEvent(String eventName, int emitterReactTag); diff --git a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/latest/com/swmansion/reanimated/NativeProxy.java b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/latest/com/swmansion/reanimated/NativeProxy.java index ddfb00aceb5b..16f95043f786 100644 --- a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/latest/com/swmansion/reanimated/NativeProxy.java +++ b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyFabric/latest/com/swmansion/reanimated/NativeProxy.java @@ -5,7 +5,6 @@ import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.RuntimeExecutor; -import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.common.annotations.FrameworkAPI; import com.facebook.react.fabric.FabricUIManager; import com.facebook.react.turbomodule.core.CallInvokerHolderImpl; @@ -33,8 +32,6 @@ public class NativeProxy extends NativeProxyCommon { LayoutAnimations LayoutAnimations = new LayoutAnimations(context); - ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread(); - if (context.isBridgeless()) { RuntimeExecutor runtimeExecutor = context.getCatalystInstance().getRuntimeExecutor(); mHybridData = @@ -44,7 +41,6 @@ public class NativeProxy extends NativeProxyCommon { runtimeExecutor, mAndroidUIScheduler, LayoutAnimations, - messageQueueThread, fabricUIManager); } else { CallInvokerHolderImpl callInvokerHolder = @@ -56,7 +52,6 @@ public class NativeProxy extends NativeProxyCommon { callInvokerHolder, mAndroidUIScheduler, LayoutAnimations, - messageQueueThread, fabricUIManager); } prepareLayoutAnimations(LayoutAnimations); @@ -72,7 +67,6 @@ private native HybridData initHybrid( CallInvokerHolderImpl jsCallInvokerHolder, AndroidUIScheduler androidUIScheduler, LayoutAnimations LayoutAnimations, - MessageQueueThread messageQueueThread, FabricUIManager fabricUIManager); private native HybridData initHybridBridgeless( @@ -81,7 +75,6 @@ private native HybridData initHybridBridgeless( RuntimeExecutor runtimeExecutor, AndroidUIScheduler androidUIScheduler, LayoutAnimations LayoutAnimations, - MessageQueueThread messageQueueThread, FabricUIManager fabricUIManager); public native boolean isAnyHandlerWaitingForEvent(String eventName, int emitterReactTag); diff --git a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/74/com/swmansion/reanimated/NativeProxy.java b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/74/com/swmansion/reanimated/NativeProxy.java index 9078f5486c6f..418ff7fc8906 100644 --- a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/74/com/swmansion/reanimated/NativeProxy.java +++ b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/74/com/swmansion/reanimated/NativeProxy.java @@ -6,7 +6,6 @@ import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.common.annotations.FrameworkAPI; import com.facebook.react.turbomodule.core.CallInvokerHolderImpl; import com.swmansion.reanimated.layoutReanimation.LayoutAnimations; @@ -28,15 +27,13 @@ public NativeProxy(ReactApplicationContext context, WorkletsModule workletsModul CallInvokerHolderImpl holder = (CallInvokerHolderImpl) context.getCatalystInstance().getJSCallInvokerHolder(); LayoutAnimations LayoutAnimations = new LayoutAnimations(context); - ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread(); mHybridData = initHybrid( workletsModule, Objects.requireNonNull(context.getJavaScriptContextHolder()).get(), holder, mAndroidUIScheduler, - LayoutAnimations, - messageQueueThread); + LayoutAnimations); prepareLayoutAnimations(LayoutAnimations); installJSIBindings(); if (BuildConfig.DEBUG) { @@ -50,8 +47,7 @@ private native HybridData initHybrid( long jsContext, CallInvokerHolderImpl jsCallInvokerHolder, AndroidUIScheduler androidUIScheduler, - LayoutAnimations LayoutAnimations, - MessageQueueThread messageQueueThread); + LayoutAnimations LayoutAnimations); public native boolean isAnyHandlerWaitingForEvent(String eventName, int emitterReactTag); diff --git a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java index f4bfa2c555c1..09068804bb3a 100644 --- a/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java +++ b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java @@ -6,7 +6,6 @@ import com.facebook.jni.HybridData; import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.queue.MessageQueueThread; import com.facebook.react.common.annotations.FrameworkAPI; import com.facebook.react.turbomodule.core.CallInvokerHolderImpl; import com.swmansion.reanimated.layoutReanimation.LayoutAnimations; @@ -27,15 +26,13 @@ public NativeProxy(ReactApplicationContext context, WorkletsModule workletsModul super(context); CallInvokerHolderImpl holder = (CallInvokerHolderImpl) context.getJSCallInvokerHolder(); LayoutAnimations LayoutAnimations = new LayoutAnimations(context); - ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread(); mHybridData = initHybrid( workletsModule, Objects.requireNonNull(context.getJavaScriptContextHolder()).get(), holder, mAndroidUIScheduler, - LayoutAnimations, - messageQueueThread); + LayoutAnimations); prepareLayoutAnimations(LayoutAnimations); installJSIBindings(); if (BuildConfig.DEBUG) { @@ -49,8 +46,7 @@ private native HybridData initHybrid( long jsContext, CallInvokerHolderImpl jsCallInvokerHolder, AndroidUIScheduler androidUIScheduler, - LayoutAnimations LayoutAnimations, - MessageQueueThread messageQueueThread); + LayoutAnimations LayoutAnimations); public native boolean isAnyHandlerWaitingForEvent(String eventName, int emitterReactTag); diff --git a/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm b/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm index b960c6c642b6..eba24c8a15c5 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm +++ b/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm @@ -14,7 +14,7 @@ #import #import #import -#import + #import #ifndef NDEBUG @@ -22,6 +22,7 @@ #endif #import +#import #ifdef RCT_NEW_ARCH_ENABLED #import @@ -65,10 +66,6 @@ static inline bool getIsReducedMotion() jsi::Runtime &rnRuntime = *reinterpret_cast(reaModule.bridge.runtime); - auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { - throw error; - }); - PlatformDepMethodsHolder platformDepMethodsHolder = makePlatformDepMethodsHolder(bridge, nodesManager, reaModule); std::shared_ptr uiScheduler = std::make_shared(); @@ -81,7 +78,6 @@ static inline bool getIsReducedMotion() nativeWorkletsModule, rnRuntime, jsScheduler, - jsQueue, uiScheduler, platformDepMethodsHolder, isBridgeless, @@ -110,10 +106,6 @@ static inline bool getIsReducedMotion() { auto nodesManager = reaModule.nodesManager; - auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { - throw error; - }); - PlatformDepMethodsHolder platformDepMethodsHolder = makePlatformDepMethodsHolderBridgeless(moduleRegistry, nodesManager, reaModule); @@ -126,7 +118,6 @@ static inline bool getIsReducedMotion() nativeWorkletsModule, runtime, jsScheduler, - jsQueue, uiScheduler, platformDepMethodsHolder, isBridgeless, diff --git a/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm b/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm index c1a6789aaabe..4f2f3ac611be 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm +++ b/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm @@ -12,7 +12,6 @@ #import #import #import -#import #import #ifndef NDEBUG @@ -20,6 +19,7 @@ #endif #import +#import #ifdef RCT_NEW_ARCH_ENABLED #import diff --git a/packages/react-native-reanimated/apple/reanimated/apple/native/REAMessageThread.h b/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h similarity index 100% rename from packages/react-native-reanimated/apple/reanimated/apple/native/REAMessageThread.h rename to packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h diff --git a/packages/react-native-reanimated/apple/reanimated/apple/native/REAMessageThread.mm b/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm similarity index 82% rename from packages/react-native-reanimated/apple/reanimated/apple/native/REAMessageThread.mm rename to packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm index be19a904ef4e..0df1e2f17947 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/native/REAMessageThread.mm +++ b/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm @@ -1,4 +1,4 @@ -#import +#import #import #import @@ -12,9 +12,9 @@ // Essentially the same as RCTMessageThread, but with public fields. struct REAMessageThreadPublic { - // I don't know why we need three vtables (if you know then feel free to - // explain it instead of this message), but this is what makes the casts in - // quitSynchronous() work correctly. + // I don't know why we need three vtables (if you know then feel free to#import + // explain it instead of this message), but this is what makes the casts + // in quitSynchronous() work correctly. void *vtable1; void *vtable2; void *vtable3; diff --git a/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm b/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm index 3872f949ef2b..622539ee20fa 100644 --- a/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm +++ b/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm @@ -1,5 +1,6 @@ #import #import +#import #import #import @@ -35,7 +36,10 @@ @implementation WorkletsModule { { auto *bridge = self.bridge; auto &rnRuntime = *(jsi::Runtime *)bridge.runtime; - nativeWorkletsModule_ = std::make_shared(std::string([valueUnpackerCode UTF8String])); + auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { + throw error; + }); + nativeWorkletsModule_ = std::make_shared(std::string([valueUnpackerCode UTF8String]), jsQueue); RNRuntimeWorkletDecorator::decorate(rnRuntime, nativeWorkletsModule_); return @YES;