Merge "Refactoring common methods" into ub-launcher3-burnaby
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
index 0ddb79e..a3a3c53 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
@@ -50,7 +50,6 @@
 import com.android.photos.views.TiledImageRenderer.TileSource;
 
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.Set;
 import java.util.WeakHashMap;
 
@@ -170,17 +169,23 @@
 
                     @Override
                     public Bitmap forPixelCount(int count) {
+                        Bitmap bitmapToReuse = null;
+                        // Find the smallest bitmap that satisfies the pixel count limit
                         synchronized (mReusableBitmaps) {
-                            Iterator<Bitmap> itr = mReusableBitmaps.iterator();
-                            while (itr.hasNext()) {
-                                Bitmap b = itr.next();
-                                if (b.getWidth() * b.getHeight() >= count) {
-                                    itr.remove();
-                                    return b;
+                            int currentBitmapSize = Integer.MAX_VALUE;
+                            for (Bitmap b : mReusableBitmaps) {
+                                int bitmapSize = b.getWidth() * b.getHeight();
+                                if ((bitmapSize >= count) && (bitmapSize < currentBitmapSize)) {
+                                    bitmapToReuse = b;
+                                    currentBitmapSize = bitmapSize;
                                 }
                             }
+
+                            if (bitmapToReuse != null) {
+                                mReusableBitmaps.remove(bitmapToReuse);
+                            }
                         }
-                        return null;
+                        return bitmapToReuse;
                     }
                 });
             } catch (SecurityException securityException) {