From 79ea845b2e1b95d023660776679d3d8000ed699c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= <40713406+tjzel@users.noreply.github.com> Date: Thu, 21 Nov 2024 16:46:20 +0100 Subject: [PATCH] chore(Worklets): SingleInstanceChecker (#6694) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary Moving `SingleInstanceChecker` to Worklets and applying it there. ## Test plan 🚀 --- .../cpp/reanimated/NativeModules/NativeReanimatedModule.h | 7 ++++--- .../cpp/worklets/NativeModules/NativeWorkletsModule.h | 4 ++++ .../{reanimated => worklets}/Tools/SingleInstanceChecker.h | 7 ++++--- .../apple/reanimated/apple/REAModule.mm | 2 +- .../apple/worklets/apple/WorkletsModule.mm | 4 ++++ 5 files changed, 17 insertions(+), 7 deletions(-) rename packages/react-native-reanimated/Common/cpp/{reanimated => worklets}/Tools/SingleInstanceChecker.h (95%) 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..55530e1a8d0 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.h +++ b/packages/react-native-reanimated/Common/cpp/reanimated/NativeModules/NativeReanimatedModule.h @@ -4,7 +4,6 @@ #include #include #include -#include #ifdef RCT_NEW_ARCH_ENABLED #include @@ -16,6 +15,7 @@ #include #include #include +#include #include #ifdef RCT_NEW_ARCH_ENABLED @@ -243,8 +243,9 @@ class NativeReanimatedModule : public NativeReanimatedModuleSpec { const KeyboardEventUnsubscribeFunction unsubscribeFromKeyboardEventsFunction_; #ifndef NDEBUG - SingleInstanceChecker singleInstanceChecker_; -#endif + worklets::SingleInstanceChecker + singleInstanceChecker_; +#endif // NDEBUG }; } // namespace reanimated 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..08c23a8813e 100644 --- a/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h +++ b/packages/react-native-reanimated/Common/cpp/worklets/NativeModules/NativeWorkletsModule.h @@ -2,6 +2,7 @@ #include #include +#include #include namespace worklets { @@ -18,6 +19,9 @@ class NativeWorkletsModule : public NativeWorkletsModuleSpec { private: const std::string valueUnpackerCode_; +#ifndef NDEBUG + SingleInstanceChecker singleInstanceChecker_; +#endif // NDEBUG }; } // namespace worklets diff --git a/packages/react-native-reanimated/Common/cpp/reanimated/Tools/SingleInstanceChecker.h b/packages/react-native-reanimated/Common/cpp/worklets/Tools/SingleInstanceChecker.h similarity index 95% rename from packages/react-native-reanimated/Common/cpp/reanimated/Tools/SingleInstanceChecker.h rename to packages/react-native-reanimated/Common/cpp/worklets/Tools/SingleInstanceChecker.h index 2a183e87004..3be7ce80fec 100644 --- a/packages/react-native-reanimated/Common/cpp/reanimated/Tools/SingleInstanceChecker.h +++ b/packages/react-native-reanimated/Common/cpp/worklets/Tools/SingleInstanceChecker.h @@ -5,14 +5,15 @@ #include #include +#include #include #include #ifdef ANDROID #include -#endif +#endif // ANDROID -namespace reanimated { +namespace worklets { // This is a class that counts how many instances of a different class there // are. It is meant only to be used with classes that should only have one @@ -66,6 +67,6 @@ SingleInstanceChecker::~SingleInstanceChecker() { instanceCount_--; } -} // namespace reanimated +} // namespace worklets #endif // NDEBUG diff --git a/packages/react-native-reanimated/apple/reanimated/apple/REAModule.mm b/packages/react-native-reanimated/apple/reanimated/apple/REAModule.mm index 625c5c6e5a4..8ba308ce79f 100644 --- a/packages/react-native-reanimated/apple/reanimated/apple/REAModule.mm +++ b/packages/react-native-reanimated/apple/reanimated/apple/REAModule.mm @@ -14,13 +14,13 @@ #endif // RCT_NEW_ARCH_ENABLED #import -#import #import #import #import #import #import +#import #import #import #import diff --git a/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm b/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm index 78b1759f5c9..3872f949ef2 100644 --- a/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm +++ b/packages/react-native-reanimated/apple/worklets/apple/WorkletsModule.mm @@ -1,6 +1,7 @@ #import #import #import +#import using worklets::NativeWorkletsModule; using worklets::RNRuntimeWorkletDecorator; @@ -16,6 +17,9 @@ - (void)_tryAndHandleError:(dispatch_block_t)block; @implementation WorkletsModule { std::shared_ptr nativeWorkletsModule_; +#ifndef NDEBUG + worklets::SingleInstanceChecker singleInstanceChecker_; +#endif // NDEBUG } - (std::shared_ptr)getNativeWorkletsModule