Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ecd80ee3 authored by Romain Guy's avatar Romain Guy
Browse files

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
parent 678c2e35
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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;
        }
    }