From 13049e6ec8827f2e992435408a5806a537fee78a Mon Sep 17 00:00:00 2001 From: Krzysztof Piaskowy Date: Wed, 29 Jan 2025 12:40:15 +0100 Subject: [PATCH] Remove runtime refference from requestRender --- .../NativeModules/ReanimatedModuleProxy.cpp | 42 +++++-------------- .../Tools/PlatformDepMethodsHolder.h | 2 +- .../cpp/reanimated/android/NativeProxy.cpp | 4 +- .../main/cpp/reanimated/android/NativeProxy.h | 2 +- .../native/PlatformDepMethodsHolderImpl.mm | 6 +-- 5 files changed, 15 insertions(+), 41 deletions(-) diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp index 438bae0242f..9979c90e2c8 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +++ b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp @@ -519,9 +519,7 @@ void ReanimatedModuleProxy::requestAnimationFrame( void ReanimatedModuleProxy::maybeRequestRender() { if (!renderRequested_) { renderRequested_ = true; - jsi::Runtime &uiRuntime = - workletsModuleProxy_->getUIWorkletRuntime()->getJSIRuntime(); - requestRender_(onRenderCallback_, uiRuntime); + requestRender_(onRenderCallback_); } } @@ -767,18 +765,12 @@ void ReanimatedModuleProxy::cssLoopCallback(const double /*timestampMs*/) { || updatesRegistryManager_->hasPropsToRevert() #endif // ANDROID ) { - jsi::Runtime &rt = - workletsModuleProxy_->getUIWorkletRuntime()->getJSIRuntime(); requestRender_( [weakThis = weak_from_this()](const double newTimestampMs) { - auto strongThis = weakThis.lock(); - if (!strongThis) { - return; + if (auto strongThis = weakThis.lock()) { + strongThis->cssLoopCallback(newTimestampMs); } - - strongThis->cssLoopCallback(newTimestampMs); - }, - rt); + }); } else { cssLoopRunning_ = false; } @@ -797,20 +789,12 @@ void ReanimatedModuleProxy::maybeRunCSSLoop() { if (!strongThis) { return; } - - jsi::Runtime &rt = - strongThis->workletsModuleProxy_->getUIWorkletRuntime() - ->getJSIRuntime(); strongThis->requestRender_( [weakThis](const double timestampMs) { - auto strongThis = weakThis.lock(); - if (!strongThis) { - return; + if (auto strongThis = weakThis.lock()) { + strongThis->cssLoopCallback(timestampMs); } - - strongThis->cssLoopCallback(timestampMs); - }, - rt); + }); }); } @@ -918,18 +902,12 @@ void ReanimatedModuleProxy::performOperations() { } void ReanimatedModuleProxy::requestFlushRegistry() { - jsi::Runtime &rt = - workletsModuleProxy_->getUIWorkletRuntime()->getJSIRuntime(); requestRender_( [weakThis = weak_from_this()](double time) { - auto strongThis = weakThis.lock(); - if (!strongThis) { - return; + if (auto strongThis = weakThis.lock()) { + strongThis->shouldFlushRegistry_ = true; } - - strongThis->shouldFlushRegistry_ = true; - }, - rt); + }); } void ReanimatedModuleProxy::commitUpdates( diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h b/packages/react-native-reanimated/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h index f5aa89f6b2a..0d3ba8ec630 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +++ b/packages/react-native-reanimated/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h @@ -56,7 +56,7 @@ using ObtainPropFunction = #endif // RCT_NEW_ARCH_ENABLED using RequestRenderFunction = - std::function, jsi::Runtime &)>; + std::function)>; using GetAnimationTimestampFunction = std::function; using ProgressLayoutAnimationFunction = 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 4a860f77741..fc8e1c0709a 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 @@ -199,9 +199,7 @@ void NativeProxy::registerNatives() { makeNativeMethod("invalidateCpp", NativeProxy::invalidateCpp)}); } -void NativeProxy::requestRender( - std::function onRender, - jsi::Runtime &) { +void NativeProxy::requestRender(std::function onRender) { static const auto method = getJniMethod("requestRender"); method( 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 ff9519470be..e091dcf8179 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 @@ -197,7 +197,7 @@ class NativeProxy : public jni::HybridClass, const int emitterReactTag); void performOperations(); bool getIsReducedMotion(); - void requestRender(std::function onRender, jsi::Runtime &rt); + void requestRender(std::function onRender); void registerEventHandler(); void maybeFlushUIUpdatesQueue(); void setGestureState(int handlerTag, int newState); 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 7c3da3c3ca8..18f2d1180b8 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm +++ b/packages/react-native-reanimated/apple/reanimated/apple/native/PlatformDepMethodsHolderImpl.mm @@ -85,7 +85,7 @@ SetGestureStateFunction makeSetGestureStateFunctionBridgeless(RCTModuleRegistry RequestRenderFunction makeRequestRender(REANodesManager *nodesManager) { - auto requestRender = [nodesManager](std::function onRender, jsi::Runtime &rt) { + auto requestRender = [nodesManager](std::function onRender) { [nodesManager postOnAnimation:^(READisplayLink *displayLink) { #if !TARGET_OS_OSX auto targetTimestamp = displayLink.targetTimestamp; @@ -93,9 +93,7 @@ RequestRenderFunction makeRequestRender(REANodesManager *nodesManager) // TODO macOS targetTimestamp isn't available on macOS auto targetTimestamp = displayLink.timestamp + displayLink.duration; #endif - double frameTimestamp = - - (targetTimestamp) * 1000; + const double frameTimestamp = targetTimestamp * 1000; onRender(frameTimestamp); }]; };