summaryrefslogtreecommitdiffstats
path: root/WallpaperPicker
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2015-02-25 11:34:17 -0800
committerSunny Goyal <sunnygoyal@google.com>2015-02-25 11:53:26 -0800
commit9f9d0a59c4dab713b6cd8f5a29ea20f646bc5ac0 (patch)
tree32efe4ac95ff3aeca1f712a80127256fda8e34cd /WallpaperPicker
parent65b929d6f21683198caf28e266fd2cf52c843764 (diff)
downloadandroid_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')
-rw-r--r--WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java21
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) {