From e52ddc9b69889fc3cfd261d9fe1f8c654ed74f15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 21 Nov 2024 12:18:52 +0100 Subject: [PATCH 1/6] refactor: move MessageQueueThread to Worklets --- .../NativeModules/NativeReanimatedModule.cpp | 10 ++++--- .../NativeModules/NativeReanimatedModule.h | 5 ++-- .../NativeModules/NativeWorkletsModule.cpp | 9 ++++-- .../NativeModules/NativeWorkletsModule.h | 11 ++++++- .../cpp/reanimated/android/NativeProxy.cpp | 29 ++++++++++--------- .../main/cpp/reanimated/android/NativeProxy.h | 16 +++++----- .../cpp/worklets/android/WorkletsModule.cpp | 14 +++++---- .../cpp/worklets/android/WorkletsModule.h | 6 ++-- .../swmansion/worklets/WorkletsModule.java | 10 +++++-- .../com/swmansion/reanimated/NativeProxy.java | 15 ++++++---- .../reanimated/apple/native/NativeProxy.mm | 18 ++++++------ .../native/PlatformDepMethodsHolderImpl.mm | 2 +- .../apple}/REAMessageThread.h | 0 .../apple}/REAMessageThread.mm | 8 ++--- .../apple/worklets/apple/WorkletsModule.mm | 6 +++- 15 files changed, 100 insertions(+), 59 deletions(-) rename packages/react-native-reanimated/apple/{reanimated/apple/native => worklets/apple}/REAMessageThread.h (100%) rename packages/react-native-reanimated/apple/{reanimated/apple/native => worklets/apple}/REAMessageThread.mm (82%) 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 404ca6b6493..d001af7c52a 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,7 @@ NativeReanimatedModule::NativeReanimatedModule( const std::shared_ptr &nativeWorkletsModule, jsi::Runtime &rnRuntime, const std::shared_ptr &jsScheduler, - const std::shared_ptr &jsQueue, + // const std::shared_ptr &jsQueue, const std::shared_ptr &uiScheduler, const PlatformDepMethodsHolder &platformDepMethodsHolder, const bool isBridgeless, @@ -64,14 +64,15 @@ NativeReanimatedModule::NativeReanimatedModule( isBridgeless ? nullptr : jsScheduler->getJSCallInvoker()), isBridgeless_(isBridgeless), isReducedMotion_(isReducedMotion), - jsQueue_(jsQueue), + // jsQueue_(jsQueue), nativeWorkletsModule_(nativeWorkletsModule), jsScheduler_(jsScheduler), uiScheduler_(uiScheduler), valueUnpackerCode_(nativeWorkletsModule->getValueUnpackerCode()), uiWorkletRuntime_(std::make_shared( rnRuntime, - jsQueue, + // jsQueue, + nativeWorkletsModule->getJSQueue(), jsScheduler_, "Reanimated UI runtime", true /* supportsLocking */, @@ -233,7 +234,8 @@ jsi::Value NativeReanimatedModule::createWorkletRuntime( const jsi::Value &initializer) { auto workletRuntime = std::make_shared( rt, - jsQueue_, + // 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 41af8f2e0d9..ebeac101064 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,7 @@ 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 &jsQueue, const std::shared_ptr &uiScheduler, const PlatformDepMethodsHolder &platformDepMethodsHolder, const bool isBridgeless, @@ -200,7 +200,8 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec { const bool isBridgeless_; const bool isReducedMotion_; - const std::shared_ptr jsQueue_; + + // 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 1a776bf8812..fd7ddb898d4 100644 --- a/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.cpp +++ b/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.cpp @@ -6,6 +6,7 @@ #endif // RCT_NEW_ARCH_ENABLED #include +#include #ifdef __ANDROID__ #include @@ -17,9 +18,13 @@ 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() {} + } // namespace worklets 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 15e8d7a271a..f22d6997862 100644 --- a/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h +++ b/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h @@ -2,13 +2,17 @@ #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(); @@ -16,8 +20,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_; }; } // namespace worklets 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 42b1f21ce14..b9a6588c45d 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,7 @@ #include #include #include -#include +// #include #include #include @@ -33,8 +33,9 @@ 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 +// , +// jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -47,7 +48,7 @@ NativeProxy::NativeProxy( nativeWorkletsModule, *rnRuntime, std::make_shared(*rnRuntime, jsCallInvoker), - std::make_shared(messageQueueThread), + // std::make_shared(messageQueueThread), uiScheduler, getPlatformDependentMethods(), /* isBridgeless */ false, @@ -66,7 +67,7 @@ NativeProxy::NativeProxy( RuntimeExecutor runtimeExecutor, const std::shared_ptr &uiScheduler, jni::global_ref layoutAnimations, - jni::alias_ref messageQueueThread, + // jni::alias_ref messageQueueThread, jni::alias_ref fabricUIManager) : javaPart_(jni::make_global(jThis)), @@ -75,7 +76,7 @@ NativeProxy::NativeProxy( nativeWorkletsModule, *rnRuntime, std::make_shared(*rnRuntime, runtimeExecutor), - std::make_shared(messageQueueThread), + // std::make_shared(messageQueueThread), uiScheduler, getPlatformDependentMethods(), /* isBridgeless */ true, @@ -119,8 +120,9 @@ 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 +// , +// jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -137,10 +139,11 @@ jni::local_ref NativeProxy::initHybrid( (jsi::Runtime *)jsContext, jsCallInvoker, uiScheduler, - make_global(layoutAnimations), - messageQueueThread + make_global(layoutAnimations) + // , + // messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED - , + , fabricUIManager #endif ); @@ -154,7 +157,7 @@ jni::local_ref NativeProxy::initHybridBridgeless( jni::alias_ref runtimeExecutorHolder, jni::alias_ref androidUiScheduler, jni::alias_ref layoutAnimations, - jni::alias_ref messageQueueThread, + // jni::alias_ref messageQueueThread, jni::alias_ref fabricUIManager) { auto uiScheduler = androidUiScheduler->cthis()->getUIScheduler(); @@ -168,7 +171,7 @@ jni::local_ref NativeProxy::initHybridBridgeless( runtimeExecutor, uiScheduler, make_global(layoutAnimations), - messageQueueThread, + // 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 1f2ac757987..b17c6733091 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,7 @@ #include #include #include -#include +// #include #include #include @@ -155,8 +155,9 @@ 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 + // , + // jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -172,7 +173,7 @@ class NativeProxy : public jni::HybridClass { jni::alias_ref runtimeExecutorHolder, jni::alias_ref androidUiScheduler, jni::alias_ref layoutAnimations, - jni::alias_ref messageQueueThread, + // jni::alias_ref messageQueueThread, jni::alias_ref fabricUIManager); #endif // RCT_NEW_ARCH_ENABLED @@ -282,8 +283,9 @@ 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 + // , + // jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -299,7 +301,7 @@ class NativeProxy : public jni::HybridClass { RuntimeExecutor runtimeExecutor, const std::shared_ptr &uiScheduler, jni::global_ref layoutAnimations, - jni::alias_ref messageQueueThread, + // 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 6be7b73349d..833c5a36cbf 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 349853b1edb..e367780de3c 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 2da67792f66..31c74a6e560 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/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java index f4bfa2c555c..50c1b0a36c4 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,17 @@ public NativeProxy(ReactApplicationContext context, WorkletsModule workletsModul super(context); CallInvokerHolderImpl holder = (CallInvokerHolderImpl) context.getJSCallInvokerHolder(); LayoutAnimations LayoutAnimations = new LayoutAnimations(context); - ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread(); + // ReanimatedMessageQueueThread messageQueueThread = new ReanimatedMessageQueueThread(); mHybridData = initHybrid( workletsModule, Objects.requireNonNull(context.getJavaScriptContextHolder()).get(), holder, mAndroidUIScheduler, - LayoutAnimations, - messageQueueThread); + LayoutAnimations + // , + // messageQueueThread + ); prepareLayoutAnimations(LayoutAnimations); installJSIBindings(); if (BuildConfig.DEBUG) { @@ -49,8 +50,10 @@ private native HybridData initHybrid( long jsContext, CallInvokerHolderImpl jsCallInvokerHolder, AndroidUIScheduler androidUIScheduler, - LayoutAnimations LayoutAnimations, - MessageQueueThread messageQueueThread); + LayoutAnimations LayoutAnimations + // , + // MessageQueueThread messageQueueThread + ); 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 b960c6c642b..5e30965536a 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,9 +66,9 @@ static inline bool getIsReducedMotion() jsi::Runtime &rnRuntime = *reinterpret_cast(reaModule.bridge.runtime); - auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { - throw error; - }); + // auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { + // throw error; + // }); PlatformDepMethodsHolder platformDepMethodsHolder = makePlatformDepMethodsHolder(bridge, nodesManager, reaModule); @@ -81,7 +82,6 @@ static inline bool getIsReducedMotion() nativeWorkletsModule, rnRuntime, jsScheduler, - jsQueue, uiScheduler, platformDepMethodsHolder, isBridgeless, @@ -110,9 +110,9 @@ static inline bool getIsReducedMotion() { auto nodesManager = reaModule.nodesManager; - auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { - throw error; - }); + // auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { + // throw error; + // }); PlatformDepMethodsHolder platformDepMethodsHolder = makePlatformDepMethodsHolderBridgeless(moduleRegistry, nodesManager, reaModule); @@ -126,7 +126,7 @@ static inline bool getIsReducedMotion() nativeWorkletsModule, runtime, jsScheduler, - jsQueue, + // 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 c1a6789aaab..4f2f3ac611b 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 be19a904ef4..0df1e2f1794 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 78b1759f5c9..3e7b1a97a9c 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 using worklets::NativeWorkletsModule; @@ -31,7 +32,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; From bc0bd9e5df19d36a6f4699dd709bf8e65f9c8d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 21 Nov 2024 13:26:28 +0100 Subject: [PATCH 2/6] chore: cleanup --- .../NativeModules/NativeReanimatedModule.cpp | 4 ---- .../NativeModules/NativeReanimatedModule.h | 3 --- .../src/main/cpp/reanimated/android/NativeProxy.cpp | 12 ------------ .../src/main/cpp/reanimated/android/NativeProxy.h | 7 ------- .../latest/com/swmansion/reanimated/NativeProxy.java | 11 ++--------- .../apple/reanimated/apple/native/NativeProxy.mm | 9 --------- 6 files changed, 2 insertions(+), 44 deletions(-) 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 d001af7c52a..4eae0aa99c3 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,12 @@ 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", @@ -234,7 +231,6 @@ jsi::Value NativeReanimatedModule::createWorkletRuntime( const jsi::Value &initializer) { auto workletRuntime = std::make_shared( rt, - // jsQueue_, nativeWorkletsModule_->getJSQueue(), jsScheduler_, name.asString(rt).utf8(rt), 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 ebeac101064..45cdeb9bfa3 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, @@ -200,8 +199,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/android/src/main/cpp/reanimated/android/NativeProxy.cpp b/packages/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp index b9a6588c45d..61fd25338fc 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 @@ -34,8 +33,6 @@ NativeProxy::NativeProxy( const std::shared_ptr &jsCallInvoker, const std::shared_ptr &uiScheduler, jni::global_ref layoutAnimations -// , -// jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -48,7 +45,6 @@ NativeProxy::NativeProxy( nativeWorkletsModule, *rnRuntime, std::make_shared(*rnRuntime, jsCallInvoker), - // std::make_shared(messageQueueThread), uiScheduler, getPlatformDependentMethods(), /* isBridgeless */ false, @@ -67,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)), @@ -76,7 +71,6 @@ NativeProxy::NativeProxy( nativeWorkletsModule, *rnRuntime, std::make_shared(*rnRuntime, runtimeExecutor), - // std::make_shared(messageQueueThread), uiScheduler, getPlatformDependentMethods(), /* isBridgeless */ true, @@ -121,8 +115,6 @@ jni::local_ref NativeProxy::initHybrid( jsCallInvokerHolder, jni::alias_ref androidUiScheduler, jni::alias_ref layoutAnimations -// , -// jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -140,8 +132,6 @@ jni::local_ref NativeProxy::initHybrid( jsCallInvoker, uiScheduler, make_global(layoutAnimations) - // , - // messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , fabricUIManager @@ -157,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(); @@ -171,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 b17c6733091..ea250729644 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 @@ -156,8 +155,6 @@ class NativeProxy : public jni::HybridClass { jsCallInvokerHolder, jni::alias_ref androidUiScheduler, jni::alias_ref layoutAnimations - // , - // jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -173,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 @@ -284,8 +280,6 @@ class NativeProxy : public jni::HybridClass { const std::shared_ptr &jsCallInvoker, const std::shared_ptr &uiScheduler, jni::global_ref layoutAnimations - // , - // jni::alias_ref messageQueueThread #ifdef RCT_NEW_ARCH_ENABLED , jni::alias_ref @@ -301,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/reactNativeVersionPatch/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java b/packages/react-native-reanimated/android/src/reactNativeVersionPatch/NativeProxyPaper/latest/com/swmansion/reanimated/NativeProxy.java index 50c1b0a36c4..09068804bb3 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 @@ -26,17 +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) { @@ -50,10 +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 5e30965536a..eba24c8a15c 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm +++ b/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm @@ -66,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(); @@ -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, From 382f1e2f611e0ac30c3c0f72da0442e878f84aac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Thu, 21 Nov 2024 14:20:07 +0100 Subject: [PATCH 3/6] chore: update source sets --- .../74/com/swmansion/reanimated/NativeProxy.java | 7 ------- .../latest/com/swmansion/reanimated/NativeProxy.java | 7 ------- .../74/com/swmansion/reanimated/NativeProxy.java | 8 ++------ 3 files changed, 2 insertions(+), 20 deletions(-) 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 1f732ab91f1..5cd43091f22 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 ddfb00aceb5..16f95043f78 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 9078f5486c6..418ff7fc890 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); From 9ba99cf257dfc28dd06325106aac6eef66e2b2b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Fri, 22 Nov 2024 18:50:07 +0100 Subject: [PATCH 4/6] chore: rename MessageQueueThread` --- .../WorkletsMessageQueueThread.java} | 4 ++-- .../WorkletsMessageQueueThreadBase.java} | 6 +++--- .../main/java/com/swmansion/worklets/WorkletsModule.java | 4 +--- .../apple/worklets/apple/REAMessageThread.h | 2 +- .../apple/worklets/apple/REAMessageThread.mm | 6 +++--- .../apple/worklets/apple/WorkletsModule.mm | 4 ++-- 6 files changed, 12 insertions(+), 14 deletions(-) rename packages/react-native-reanimated/android/src/main/java/com/swmansion/{reanimated/ReanimatedMessageQueueThread.java => worklets/WorkletsMessageQueueThread.java} (69%) rename packages/react-native-reanimated/android/src/main/java/com/swmansion/{reanimated/ReanimatedMessageQueueThreadBase.java => worklets/WorkletsMessageQueueThreadBase.java} (93%) diff --git a/packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/ReanimatedMessageQueueThread.java b/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThread.java similarity index 69% rename from packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/ReanimatedMessageQueueThread.java rename to packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThread.java index e6a4cd1c37b..b1ccdf8b59d 100644 --- a/packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/ReanimatedMessageQueueThread.java +++ b/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThread.java @@ -1,9 +1,9 @@ -package com.swmansion.reanimated; +package com.swmansion.worklets; import com.facebook.proguard.annotations.DoNotStrip; @DoNotStrip -public class ReanimatedMessageQueueThread extends ReanimatedMessageQueueThreadBase { +public class WorkletsMessageQueueThread extends WorkletsMessageQueueThreadBase { @Override public boolean runOnQueue(Runnable runnable) { return messageQueueThread.runOnQueue(runnable); diff --git a/packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/ReanimatedMessageQueueThreadBase.java b/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThreadBase.java similarity index 93% rename from packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/ReanimatedMessageQueueThreadBase.java rename to packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThreadBase.java index ca7733d0cbc..ade92c5b8b2 100644 --- a/packages/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/ReanimatedMessageQueueThreadBase.java +++ b/packages/react-native-reanimated/android/src/main/java/com/swmansion/worklets/WorkletsMessageQueueThreadBase.java @@ -1,4 +1,4 @@ -package com.swmansion.reanimated; +package com.swmansion.worklets; import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.bridge.queue.MessageQueueThread; @@ -14,10 +14,10 @@ // The only method that has changed is `quitSynchronous()` (see comment above // function implementation for details). @DoNotStrip -public abstract class ReanimatedMessageQueueThreadBase implements MessageQueueThread { +public abstract class WorkletsMessageQueueThreadBase implements MessageQueueThread { protected final MessageQueueThreadImpl messageQueueThread; - public ReanimatedMessageQueueThreadBase() { + public WorkletsMessageQueueThreadBase() { messageQueueThread = MessageQueueThreadImpl.create( MessageQueueThreadSpec.mainThreadSpec(), 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 31c74a6e560..62ca7713cdc 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 @@ -10,7 +10,6 @@ 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) @@ -30,8 +29,7 @@ protected HybridData getHybridData() { return mHybridData; } - private final ReanimatedMessageQueueThread mMessageQueueThread = - new ReanimatedMessageQueueThread(); + private final WorkletsMessageQueueThread mMessageQueueThread = new WorkletsMessageQueueThread(); /** * @noinspection JavaJniMissingFunction diff --git a/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h b/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h index 16f47378a33..2ac8055a090 100644 --- a/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h +++ b/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h @@ -10,7 +10,7 @@ namespace facebook { namespace react { -class REAMessageThread : public RCTMessageThread { +class WorkletsMessageThread : public RCTMessageThread { public: using RCTMessageThread::RCTMessageThread; virtual void quitSynchronous() override; diff --git a/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm b/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm index 0df1e2f1794..1c5bca8e1dd 100644 --- a/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm +++ b/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm @@ -11,7 +11,7 @@ namespace react { // Essentially the same as RCTMessageThread, but with public fields. -struct REAMessageThreadPublic { +struct WorkletsMessageThreadPublic { // 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. @@ -27,10 +27,10 @@ // is an assertion for that in the destructor of RCTMessageThread, but we have // to override quitSynchronous() as it would quit the main looper and freeze // the app. -void REAMessageThread::quitSynchronous() +void WorkletsMessageThread::quitSynchronous() { RCTMessageThread *rctThread = static_cast(this); - REAMessageThreadPublic *rctThreadPublic = reinterpret_cast(rctThread); + WorkletsMessageThreadPublic *rctThreadPublic = reinterpret_cast(rctThread); rctThreadPublic->m_shutdown = true; } diff --git a/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm b/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm index 3e7b1a97a9c..344294bc797 100644 --- a/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm +++ b/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm @@ -1,6 +1,6 @@ #import #import -#import +#import #import using worklets::NativeWorkletsModule; @@ -32,7 +32,7 @@ @implementation WorkletsModule { { auto *bridge = self.bridge; auto &rnRuntime = *(jsi::Runtime *)bridge.runtime; - auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { + auto jsQueue = std::make_shared([NSRunLoop currentRunLoop], ^(NSError *error) { throw error; }); nativeWorkletsModule_ = std::make_shared(std::string([valueUnpackerCode UTF8String]), jsQueue); From 9bd0e44ae79eb61f34e7f2615d7f164873b3f052 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Mon, 25 Nov 2024 17:26:31 +0100 Subject: [PATCH 5/6] chore: fix includes --- .../apple/reanimated/apple/native/NativeProxy.mm | 2 +- .../reanimated/apple/native/PlatformDepMethodsHolderImpl.mm | 2 +- .../apple/{REAMessageThread.h => WorkletsMessageThread.h} | 0 .../apple/{REAMessageThread.mm => WorkletsMessageThread.mm} | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) rename packages/react-native-reanimated/apple/worklets/apple/{REAMessageThread.h => WorkletsMessageThread.h} (100%) rename packages/react-native-reanimated/apple/worklets/apple/{REAMessageThread.mm => WorkletsMessageThread.mm} (87%) 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 eba24c8a15c..d99b0e97c99 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm +++ b/packages/react-native-reanimated/apple/reanimated/apple/native/NativeProxy.mm @@ -22,7 +22,7 @@ #endif #import -#import +#import #ifdef RCT_NEW_ARCH_ENABLED #import 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 4f2f3ac611b..65f5584a4c8 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm +++ b/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm @@ -19,7 +19,7 @@ #endif #import -#import +#import #ifdef RCT_NEW_ARCH_ENABLED #import diff --git a/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h b/packages/react-native-reanimated/apple/worklets/apple/WorkletsMessageThread.h similarity index 100% rename from packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.h rename to packages/react-native-reanimated/apple/worklets/apple/WorkletsMessageThread.h diff --git a/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm b/packages/react-native-reanimated/apple/worklets/apple/WorkletsMessageThread.mm similarity index 87% rename from packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm rename to packages/react-native-reanimated/apple/worklets/apple/WorkletsMessageThread.mm index 1c5bca8e1dd..b5e46a10e56 100644 --- a/packages/react-native-reanimated/apple/worklets/apple/REAMessageThread.mm +++ b/packages/react-native-reanimated/apple/worklets/apple/WorkletsMessageThread.mm @@ -1,4 +1,4 @@ -#import +#import #import #import @@ -13,7 +13,7 @@ // Essentially the same as RCTMessageThread, but with public fields. struct WorkletsMessageThreadPublic { // 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 + // explain it instead of this message), but this is what makes the casts // in quitSynchronous() work correctly. void *vtable1; void *vtable2; From c89964e20c91916ddb375bb142ed663e5614b48e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Tue, 26 Nov 2024 10:20:00 +0100 Subject: [PATCH 6/6] chore: apply formatting --- .../src/main/java/com/swmansion/worklets/WorkletsModule.java | 1 - 1 file changed, 1 deletion(-) 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 ccc4338cc8c..62ca7713cdc 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 @@ -10,7 +10,6 @@ import com.facebook.react.module.annotations.ReactModule; import com.facebook.soloader.SoLoader; import com.swmansion.reanimated.NativeWorkletsModuleSpec; -import com.swmansion.worklets.WorkletsMessageQueueThread; import java.util.Objects; @ReactModule(name = WorkletsModule.NAME)