From 7cd1f0d39ada62669fb9bcd0a71fab059386fcd3 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 9 Feb 2016 21:36:41 -0800 Subject: [PATCH] Do not invalidate drawable if tint doesn't change Change-Id: I99d7a679ba3aa4978f2915f1a52f23dbce7fd971 --- .../graphics/drawable/BitmapDrawable.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/graphics/java/android/graphics/drawable/BitmapDrawable.java b/graphics/java/android/graphics/drawable/BitmapDrawable.java index daf25815d1ac2..bffbc751ee834 100644 --- a/graphics/java/android/graphics/drawable/BitmapDrawable.java +++ b/graphics/java/android/graphics/drawable/BitmapDrawable.java @@ -641,16 +641,22 @@ public class BitmapDrawable extends Drawable { @Override public void setTintList(ColorStateList tint) { - mBitmapState.mTint = tint; - mTintFilter = updateTintFilter(mTintFilter, tint, mBitmapState.mTintMode); - invalidateSelf(); + final BitmapState state = mBitmapState; + if (state.mTint != tint) { + state.mTint = tint; + mTintFilter = updateTintFilter(mTintFilter, tint, mBitmapState.mTintMode); + invalidateSelf(); + } } @Override public void setTintMode(PorterDuff.Mode tintMode) { - mBitmapState.mTintMode = tintMode; - mTintFilter = updateTintFilter(mTintFilter, mBitmapState.mTint, tintMode); - invalidateSelf(); + final BitmapState state = mBitmapState; + if (state.mTintMode != tintMode) { + state.mTintMode = tintMode; + mTintFilter = updateTintFilter(mTintFilter, mBitmapState.mTint, tintMode); + invalidateSelf(); + } } /**