From 9d8a230fbd71ac57ef806326f15fa133ba125083 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Fri, 31 Jul 2015 19:51:48 +0000 Subject: [PATCH] Revert "View measurement optimization" LinearLayout relied on multiple measurement passes to hide a discrepancy between EXACTLY and non-EXACTLY measurements. This reverts commit 9cefbda11ee5308145d58b0b99ced0f66a0b1cf9. Bug: 22810327 Change-Id: I515a80749420d00efc5002fa68221b7c236f03df --- core/java/android/view/View.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 5e3a96a99418..43c578fe7faf 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -18772,22 +18772,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback, long key = (long) widthMeasureSpec << 32 | (long) heightMeasureSpec & 0xffffffffL; if (mMeasureCache == null) mMeasureCache = new LongSparseLongArray(2); - final boolean forceLayout = (mPrivateFlags & PFLAG_FORCE_LAYOUT) == PFLAG_FORCE_LAYOUT; - final boolean isExactly = MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY && - MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.EXACTLY; - final boolean matchingSize = isExactly && - getMeasuredWidth() == MeasureSpec.getSize(widthMeasureSpec) && - getMeasuredHeight() == MeasureSpec.getSize(heightMeasureSpec); - if (forceLayout || !matchingSize && - (widthMeasureSpec != mOldWidthMeasureSpec || - heightMeasureSpec != mOldHeightMeasureSpec)) { + if ((mPrivateFlags & PFLAG_FORCE_LAYOUT) == PFLAG_FORCE_LAYOUT || + widthMeasureSpec != mOldWidthMeasureSpec || + heightMeasureSpec != mOldHeightMeasureSpec) { // first clears the measured dimension flag mPrivateFlags &= ~PFLAG_MEASURED_DIMENSION_SET; resolveRtlPropertiesIfNeeded(); - int cacheIndex = forceLayout ? -1 : mMeasureCache.indexOfKey(key); + int cacheIndex = (mPrivateFlags & PFLAG_FORCE_LAYOUT) == PFLAG_FORCE_LAYOUT ? -1 : + mMeasureCache.indexOfKey(key); if (cacheIndex < 0 || sIgnoreMeasureCache) { // measure ourselves, this should set the measured dimension flag back onMeasure(widthMeasureSpec, heightMeasureSpec); -- 2.11.0