From e5aad7a7523d155a62043b713f3b03273056ecbd Mon Sep 17 00:00:00 2001 From: "James.cf Lin" Date: Wed, 9 Mar 2022 01:41:46 +0800 Subject: [PATCH] Fix performance regression create_PrecomputedText_NoStyled_Greedy_NoHyphenation_DirDifferent_min The LineBreakConfig instance in the StaticLayout is null as default. Because the LineBreakConfig in StaticLayout was not initialized, the null instance was brought to PrecomputedText and caused the function PrecomputedText.Builder#checkResultUsable to return UNUSABLE. Bug: b/220992481 Test: atest StaticLayoutTest; atest StaticLayoutPerfTest Change-Id: I93bcb6ebc35344e34e9bb8a24df375aa7b3a8d81 --- core/java/android/text/StaticLayout.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index d63d66e965c25..2f85d2b63840b 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -112,6 +112,7 @@ public class StaticLayout extends Layout { b.mBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE; b.mHyphenationFrequency = Layout.HYPHENATION_FREQUENCY_NONE; b.mJustificationMode = Layout.JUSTIFICATION_MODE_NONE; + b.mLineBreakConfig = LineBreakConfig.NONE; return b; } @@ -455,7 +456,7 @@ public class StaticLayout extends Layout { @Nullable private int[] mRightIndents; private int mJustificationMode; private boolean mAddLastLineLineSpacing; - private LineBreakConfig mLineBreakConfig; + private LineBreakConfig mLineBreakConfig = LineBreakConfig.NONE; private final Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt();