From 33ed358330c123780ee8e1c7a02e34be2fa3c3ae Mon Sep 17 00:00:00 2001 From: Joshua Gross Date: Mon, 15 Jun 2020 18:03:22 -0700 Subject: [PATCH] Bust `surfaceActiveForExecution` cache after executing a batch of items Summary: Since we were not busting the `surfaceActiveForExecution` cache, it is very possible (likely, even!) that a surfaceId is invalidated in between UI ticks but we keep executing items for that surface at the next tick. Changelog: [Internal] Reviewed By: mdvacca Differential Revision: D22055303 fbshipit-source-id: 351c13535e85b30e00684fe35fc4aa79ccb5961c --- .../main/java/com/facebook/react/fabric/FabricUIManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java index e6762217abc..4bfbd111794 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java @@ -326,6 +326,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { @Nullable Object stateWrapper, boolean isLayoutable) { ThemedReactContext context = mReactContextForRootTag.get(rootTag); + String component = getFabricComponentName(componentName); synchronized (mPreMountItemsLock) { mPreMountItems.add( @@ -667,6 +668,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { didDispatchItems = dispatchMountItems(); } catch (Throwable e) { mReDispatchCounter = 0; + mLastExecutedMountItemSurfaceId = -1; throw e; } finally { // Clean up after running dispatchMountItems - even if an exception was thrown @@ -693,6 +695,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { tryDispatchMountItems(); } mReDispatchCounter = 0; + mLastExecutedMountItemSurfaceId = -1; } @UiThread @@ -947,6 +950,7 @@ public class FabricUIManager implements UIManager, LifecycleEventListener { } } finally { mInDispatch = false; + mLastExecutedMountItemSurfaceId = -1; } Systrace.endSection(Systrace.TRACE_TAG_REACT_JAVA_BRIDGE);