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

Commit 8683a4f8 authored by Alan Viverette's avatar Alan Viverette
Browse files

Only force drawing in RippleDrawable when necessary

BUG: 17451761
Change-Id: Ibb9d1c64791ec54eb90608c957eeb5efb1712b4a
parent 3ab7bf1a
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -155,6 +155,13 @@ public class RippleDrawable extends LayerDrawable {
    /** Whether bounds are being overridden. */
    private boolean mOverrideBounds;

    /**
     * Whether the next draw MUST draw something to canvas. Used to work around
     * a bug in hardware invalidation following a render thread-accelerated
     * animation.
     */
    private boolean mNeedsDraw;

    /**
     * Constructor used for drawable inflation.
     */
@@ -204,6 +211,8 @@ public class RippleDrawable extends LayerDrawable {
        }

        cancelExitingRipples();

        mNeedsDraw = true;
        invalidateSelf();
    }

@@ -548,6 +557,8 @@ public class RippleDrawable extends LayerDrawable {
        }

        cancelExitingRipples();

        mNeedsDraw = true;
        invalidateSelf();
    }

@@ -642,11 +653,12 @@ public class RippleDrawable extends LayerDrawable {
            canvas.restoreToCount(rippleLayer);
        }

        // If we failed to draw anything, at least draw a color so that
        // invalidation works correctly.
        if (contentLayer < 0 && backgroundLayer < 0 && rippleLayer < 0) {
        // If we failed to draw anything and we just canceled animations, at
        // least draw a color so that hardware invalidation works correctly.
        if (contentLayer < 0 && backgroundLayer < 0 && rippleLayer < 0 && mNeedsDraw) {
            canvas.drawColor(Color.TRANSPARENT);
        }
        mNeedsDraw = false;

        canvas.restoreToCount(saveCount);
    }