From ecd80ee31c23ac067bb420f44f046682c499e83c Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 3 Dec 2009 17:13:02 -0800 Subject: [PATCH] Fix invalidate code path (#2273209). Cached views would, in some situations, not update if they contained an animating child. This was caused by clearing the dirty cache flag too early in View.buildDrawingCache(). Approved by Dr. No mcleron. Change-Id: I8c5f2fc3e6605657e0da625d60d50b55bb133666 --- core/java/android/view/View.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 0b8753659087c..1fc367810d22e 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -4324,8 +4324,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility requestLayout(); invalidate(); - if (((mViewFlags & VISIBILITY_MASK) == GONE) && hasFocus()) { - clearFocus(); + if (((mViewFlags & VISIBILITY_MASK) == GONE)) { + if (hasFocus()) clearFocus(); + destroyDrawingCache(); } if (mAttachInfo != null) { mAttachInfo.mViewVisibilityChanged = true; @@ -6283,6 +6284,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility canvas.translate(-mScrollX, -mScrollY); mPrivateFlags |= DRAWN; + mPrivateFlags |= DRAWING_CACHE_VALID; // Fast path for layouts with no backgrounds if ((mPrivateFlags & SKIP_DRAW) == SKIP_DRAW) { @@ -6301,7 +6303,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, Accessibility // Restore the cached Canvas for our siblings attachInfo.mCanvas = canvas; } - mPrivateFlags |= DRAWING_CACHE_VALID; } }