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

Commit 2ba4dfc7 authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Avoid drawable invalidation during draw()"

parents d01fafb7 8cda8e91
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -3592,6 +3592,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    private int[] mDrawableState = null;
    /** Whether draw() is currently being called. */
    private boolean mInDraw = false;
    ViewOutlineProvider mOutlineProvider = ViewOutlineProvider.BACKGROUND;
    /**
@@ -16470,6 +16473,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     */
    @CallSuper
    public void draw(Canvas canvas) {
        mInDraw = true;
        final int privateFlags = mPrivateFlags;
        final boolean dirtyOpaque = (privateFlags & PFLAG_DIRTY_MASK) == PFLAG_DIRTY_OPAQUE &&
                (mAttachInfo == null || !mAttachInfo.mIgnoreDirtyState);
@@ -16514,6 +16519,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
            onDrawForeground(canvas);
            // we're done...
            mInDraw = false;
            return;
        }
@@ -16661,6 +16667,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        // Step 6, draw decorations (foreground, scrollbars)
        onDrawForeground(canvas);
        mInDraw = false;
    }
    /**
@@ -17105,7 +17113,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     */
    @Override
    public void invalidateDrawable(@NonNull Drawable drawable) {
        if (verifyDrawable(drawable)) {
        // Don't invalidate if a drawable changes during drawing.
        if (verifyDrawable(drawable) && !mInDraw) {
            final Rect dirty = drawable.getDirtyBounds();
            final int scrollX = mScrollX;
            final int scrollY = mScrollY;