Skip to content

Commit 9d8a230

Browse files
committed
Revert "View measurement optimization"
LinearLayout relied on multiple measurement passes to hide a discrepancy between EXACTLY and non-EXACTLY measurements. This reverts commit 9cefbda. Bug: 22810327 Change-Id: I515a80749420d00efc5002fa68221b7c236f03df
1 parent c35e670 commit 9d8a230

1 file changed

Lines changed: 5 additions & 10 deletions

File tree

core/java/android/view/View.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18772,22 +18772,17 @@ public final void measure(int widthMeasureSpec, int heightMeasureSpec) {
1877218772
long key = (long) widthMeasureSpec << 32 | (long) heightMeasureSpec & 0xffffffffL;
1877318773
if (mMeasureCache == null) mMeasureCache = new LongSparseLongArray(2);
1877418774

18775-
final boolean forceLayout = (mPrivateFlags & PFLAG_FORCE_LAYOUT) == PFLAG_FORCE_LAYOUT;
18776-
final boolean isExactly = MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY &&
18777-
MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.EXACTLY;
18778-
final boolean matchingSize = isExactly &&
18779-
getMeasuredWidth() == MeasureSpec.getSize(widthMeasureSpec) &&
18780-
getMeasuredHeight() == MeasureSpec.getSize(heightMeasureSpec);
18781-
if (forceLayout || !matchingSize &&
18782-
(widthMeasureSpec != mOldWidthMeasureSpec ||
18783-
heightMeasureSpec != mOldHeightMeasureSpec)) {
18775+
if ((mPrivateFlags & PFLAG_FORCE_LAYOUT) == PFLAG_FORCE_LAYOUT ||
18776+
widthMeasureSpec != mOldWidthMeasureSpec ||
18777+
heightMeasureSpec != mOldHeightMeasureSpec) {
1878418778

1878518779
// first clears the measured dimension flag
1878618780
mPrivateFlags &= ~PFLAG_MEASURED_DIMENSION_SET;
1878718781

1878818782
resolveRtlPropertiesIfNeeded();
1878918783

18790-
int cacheIndex = forceLayout ? -1 : mMeasureCache.indexOfKey(key);
18784+
int cacheIndex = (mPrivateFlags & PFLAG_FORCE_LAYOUT) == PFLAG_FORCE_LAYOUT ? -1 :
18785+
mMeasureCache.indexOfKey(key);
1879118786
if (cacheIndex < 0 || sIgnoreMeasureCache) {
1879218787
// measure ourselves, this should set the measured dimension flag back
1879318788
onMeasure(widthMeasureSpec, heightMeasureSpec);

0 commit comments

Comments
 (0)