From 8683a4f819c5b4c77593568048428a6a18a883ca Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Wed, 10 Sep 2014 14:05:15 -0700 Subject: Only force drawing in RippleDrawable when necessary BUG: 17451761 Change-Id: Ibb9d1c64791ec54eb90608c957eeb5efb1712b4a --- .../java/android/graphics/drawable/RippleDrawable.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'graphics/java/android') diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index b05fb6130757..b13669b13816 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -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); } -- cgit v1.2.3-59-g8ed1b