Fixing adaptive icon bounds caching

Change-Id: Ifa0ed4d600fcd2c50558ea9ae6e95f3364d4949a
diff --git a/src/com/android/launcher3/graphics/IconNormalizer.java b/src/com/android/launcher3/graphics/IconNormalizer.java
index 13f322e..34d0b72 100644
--- a/src/com/android/launcher3/graphics/IconNormalizer.java
+++ b/src/com/android/launcher3/graphics/IconNormalizer.java
@@ -74,6 +74,8 @@
     private final Paint mPaintMaskShapeOutline;
     private final byte[] mPixels;
     private final int[] mPixelsARGB;
+
+    private final Rect mAdaptiveIconBounds;
     private float mAdaptiveIconScale;
 
     // for each y, stores the position of the leftmost x and the rightmost x
@@ -99,6 +101,7 @@
         mLeftBorder = new float[mMaxSize];
         mRightBorder = new float[mMaxSize];
         mBounds = new Rect();
+        mAdaptiveIconBounds = new Rect();
 
         // Needed for isShape() method
         mBitmapARGB = Bitmap.createBitmap(mMaxSize, mMaxSize, Bitmap.Config.ARGB_8888);
@@ -231,7 +234,7 @@
         if (Utilities.isAtLeastO() && d instanceof AdaptiveIconDrawable &&
                 mAdaptiveIconScale != SCALE_NOT_INITIALIZED) {
             if (outBounds != null) {
-                outBounds.set(mBounds);
+                outBounds.set(mAdaptiveIconBounds);
             }
             return mAdaptiveIconScale;
         }
@@ -347,6 +350,7 @@
         if (Utilities.isAtLeastO() && d instanceof AdaptiveIconDrawable &&
                 mAdaptiveIconScale == SCALE_NOT_INITIALIZED) {
             mAdaptiveIconScale = scale;
+            mAdaptiveIconBounds.set(mBounds);
         }
         return scale;
     }