diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2015-02-25 11:34:17 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2015-02-25 11:53:26 -0800 |
commit | 9f9d0a59c4dab713b6cd8f5a29ea20f646bc5ac0 (patch) | |
tree | 32efe4ac95ff3aeca1f712a80127256fda8e34cd /WallpaperPicker/src/com/android/launcher3 | |
parent | 65b929d6f21683198caf28e266fd2cf52c843764 (diff) | |
download | android_packages_apps_Trebuchet-9f9d0a59c4dab713b6cd8f5a29ea20f646bc5ac0.tar.gz android_packages_apps_Trebuchet-9f9d0a59c4dab713b6cd8f5a29ea20f646bc5ac0.tar.bz2 android_packages_apps_Trebuchet-9f9d0a59c4dab713b6cd8f5a29ea20f646bc5ac0.zip |
Picking a bitmap to reuse where least pixels are wasted
Change-Id: I4217bc68a5caa2d1526e4ebb101dbaf0348066d3
Diffstat (limited to 'WallpaperPicker/src/com/android/launcher3')
-rw-r--r-- | WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java index 0ddb79e4f..a3a3c537b 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.BitmapRegionTileSource.BitmapSource.InBitmapProvider; 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 @@ public class WallpaperCropActivity extends Activity implements Handler.Callback @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) { |