From d315e9c743708f0a9c5a1ccffacba783de355c34 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Wed, 25 May 2022 09:14:44 -0700 Subject: [PATCH] Add feature flag to enable / disable SpannableCache in TextLayoutManagerMapBuffer Summary: Quick diff to add feature flag to enable / disable SpannableCache in TextLayoutManagerMapBuffer changelog: [internal] internal Reviewed By: genkikondo Differential Revision: D36498646 fbshipit-source-id: 4cabb75441ddbafeff65f3e9b2df6a38431a996a --- .../text/TextLayoutManagerMapBuffer.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java index bf59c915de0..ecbf0d45489 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java @@ -29,6 +29,7 @@ import com.facebook.react.bridge.ReactSoftExceptionLogger; import com.facebook.react.bridge.WritableArray; import com.facebook.react.common.build.ReactBuildConfig; import com.facebook.react.common.mapbuffer.MapBuffer; +import com.facebook.react.config.ReactFeatureFlags; import com.facebook.react.uimanager.PixelUtil; import com.facebook.yoga.YogaConstants; import com.facebook.yoga.YogaMeasureMode; @@ -205,19 +206,25 @@ public class TextLayoutManagerMapBuffer { Spannable preparedSpannableText; - synchronized (sSpannableCacheLock) { - preparedSpannableText = sSpannableCache.get(attributedString); - if (preparedSpannableText != null) { - return preparedSpannableText; + if (ReactFeatureFlags.enableSpannableCache) { + synchronized (sSpannableCacheLock) { + preparedSpannableText = sSpannableCache.get(attributedString); + if (preparedSpannableText != null) { + return preparedSpannableText; + } } - } - preparedSpannableText = - createSpannableFromAttributedString( - context, attributedString, reactTextViewManagerCallback); + preparedSpannableText = + createSpannableFromAttributedString( + context, attributedString, reactTextViewManagerCallback); - synchronized (sSpannableCacheLock) { - sSpannableCache.put(attributedString, preparedSpannableText); + synchronized (sSpannableCacheLock) { + sSpannableCache.put(attributedString, preparedSpannableText); + } + } else { + preparedSpannableText = + createSpannableFromAttributedString( + context, attributedString, reactTextViewManagerCallback); } return preparedSpannableText;