diff --git a/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt b/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt index cb226be7ac1..cceac9a5a40 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/renderer/animated/CMakeLists.txt @@ -32,3 +32,4 @@ target_link_libraries(react_renderer_animated ) target_compile_reactnative_options(react_renderer_animated PRIVATE) target_compile_options(react_renderer_animated PRIVATE -Wpedantic) +target_compile_definitions(react_renderer_animated PRIVATE RN_USE_ANIMATION_BACKEND) diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp index 0e797af126e..a71cf20763d 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.cpp @@ -33,9 +33,12 @@ #include #include #include -#include #include +#ifdef RN_USE_ANIMATION_BACKEND +#include +#endif + namespace facebook::react { // Global function pointer for getting current time. Current time @@ -515,11 +518,13 @@ NativeAnimatedNodesManager::ensureEventEmitterListener() noexcept { void NativeAnimatedNodesManager::startRenderCallbackIfNeeded() { if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { +#ifdef RN_USE_ANIMATION_BACKEND if (auto animationBackend = std::static_pointer_cast(animationBackend_)) { animationBackend->start( [this](float /*f*/) { return pullAnimationMutations(); }); } +#endif return; } @@ -887,6 +892,7 @@ void NativeAnimatedNodesManager::schedulePropsCommit( } } +#ifdef RN_USE_ANIMATION_BACKEND AnimationMutations NativeAnimatedNodesManager::pullAnimationMutations() { if (!ReactNativeFeatureFlags::useSharedAnimatedBackend()) { return {}; @@ -1005,6 +1011,7 @@ AnimationMutations NativeAnimatedNodesManager::pullAnimationMutations() { } return mutations; } +#endif void NativeAnimatedNodesManager::onRender() { if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h index 4aead3b39ed..90b50923212 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManager.h @@ -17,7 +17,9 @@ #include #include #include +#ifdef RN_USE_ANIMATION_BACKEND #include +#endif #include #include #include @@ -114,7 +116,9 @@ class NativeAnimatedNodesManager { void setAnimatedNodeOffset(Tag tag, double offset); +#ifdef RN_USE_ANIMATION_BACKEND AnimationMutations pullAnimationMutations(); +#endif #pragma mark - Drivers diff --git a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp index 7b040da44b0..8f45b416490 100644 --- a/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp +++ b/packages/react-native/ReactCommon/react/renderer/animated/NativeAnimatedNodesManagerProvider.cpp @@ -11,7 +11,9 @@ #include #include #include +#ifdef RN_USE_ANIMATION_BACKEND #include +#endif #include namespace facebook::react { @@ -66,6 +68,7 @@ NativeAnimatedNodesManagerProvider::getOrCreate( }; if (ReactNativeFeatureFlags::useSharedAnimatedBackend()) { +#ifdef RN_USE_ANIMATION_BACKEND // TODO: this should be initialized outside of animated, but for now it // was convenient to do it here animationBackend_ = std::make_shared( @@ -74,6 +77,7 @@ NativeAnimatedNodesManagerProvider::getOrCreate( std::move(directManipulationCallback), std::move(fabricCommitCallback), uiManager); +#endif nativeAnimatedNodesManager_ = std::make_shared(animationBackend_); diff --git a/private/react-native-fantom/runner/executables/tester.js b/private/react-native-fantom/runner/executables/tester.js index bc26e39109f..2e173a41de9 100644 --- a/private/react-native-fantom/runner/executables/tester.js +++ b/private/react-native-fantom/runner/executables/tester.js @@ -15,6 +15,7 @@ import {NATIVE_BUILD_OUTPUT_PATH} from '../paths'; import { getBuckModesForPlatform, getBuckOptionsForHermes, + getConfigForAnimationBackend, getDebugInfoFromCommandResult, runBuck2, runBuck2Sync, @@ -54,6 +55,7 @@ export function build(options: TesterOptions): void { 'build', ...getBuckModesForPlatform(options.isOptimizedMode), ...getBuckOptionsForHermes(options.hermesVariant), + ...getConfigForAnimationBackend(), FANTOM_TESTER_BUCK_TARGET, '--out', tmpPath, @@ -94,6 +96,7 @@ export function run( 'run', ...getBuckModesForPlatform(options.isOptimizedMode), ...getBuckOptionsForHermes(options.hermesVariant), + ...getConfigForAnimationBackend(), FANTOM_TESTER_BUCK_TARGET, '--', ...args, diff --git a/private/react-native-fantom/runner/utils.js b/private/react-native-fantom/runner/utils.js index 25cdb319bcf..8271d77dc4e 100644 --- a/private/react-native-fantom/runner/utils.js +++ b/private/react-native-fantom/runner/utils.js @@ -104,6 +104,11 @@ export function getBuckModesForPlatform( return ['@//xplat/mode/react-native/granite', osPlatform]; } +// TODO: T240293839 Remove when we get rid of RN_USE_ANIMATION_BACKEND preprocessor flag +export function getConfigForAnimationBackend(): $ReadOnlyArray { + return ['-c rn.use_animationbackend=true']; +} + export type AsyncCommandResult = { originalCommand: string, childProcess: ReturnType,