From 13afc454f19576f8232c4bc0c05952199457016f Mon Sep 17 00:00:00 2001 From: David Vacca Date: Fri, 21 Feb 2020 21:05:35 -0800 Subject: [PATCH] Disable preallocation of virtual Nodes Summary: This diff disables preallocation of virtual nodes, I'm doing this as an intermediate step to eradicate virtual nodes from the android mounting layer. changelog: [internal] Reviewed By: JoshuaGross Differential Revision: D20048996 fbshipit-source-id: 8fe0b03bcfcfd83a3093d1503ac93a20a5e9a57e --- .../main/java/com/facebook/react/fabric/jni/Binding.cpp | 8 +++++++- .../src/main/java/com/facebook/react/fabric/jni/Binding.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp index b3aec67b671..9551e266a05 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jni/Binding.cpp @@ -255,7 +255,9 @@ void Binding::installFabricUIManager( "react_fabric:enable_removedelete_collation_android"); collapseDeleteCreateMountingInstructions_ = reactNativeConfig_->getBool( "react_fabric:enabled_collapse_delete_create_mounting_instructions"); - ; + + disableVirtualNodePreallocation_ = reactNativeConfig_->getBool( + "react_fabric:disable_virtual_node_preallocation"); disablePreallocateViews_ = reactNativeConfig_->getBool( "react_fabric:disabled_view_preallocation_android"); @@ -862,6 +864,10 @@ void Binding::schedulerDidRequestPreliminaryViewAllocation( bool isLayoutableShadowNode = shadowView.layoutMetrics != EmptyLayoutMetrics; + if (disableVirtualNodePreallocation_ && !isLayoutableShadowNode) { + return; + } + static auto preallocateView = jni::findClassStatic(UIManagerJavaDescriptor) ->getMethod, public SchedulerDelegate { bool shouldCollateRemovesAndDeletes_{false}; bool collapseDeleteCreateMountingInstructions_{false}; bool disablePreallocateViews_{false}; + bool disableVirtualNodePreallocation_{false}; }; } // namespace react