summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/WidgetPreviewLoader.java
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2014-03-18 23:09:12 +0100
committerAdrian Roos <roosa@google.com>2014-03-19 16:27:35 +0100
commit5d2704fbb0a7bb4763d4e2ee031e16a8913ba003 (patch)
tree5e2831a558197860fd27ff267c10240294801029 /src/com/android/launcher3/WidgetPreviewLoader.java
parente769d1681e1177b9e37c0be9e12d1ede55d4e3a9 (diff)
downloadandroid_packages_apps_Trebuchet-5d2704fbb0a7bb4763d4e2ee031e16a8913ba003.tar.gz
android_packages_apps_Trebuchet-5d2704fbb0a7bb4763d4e2ee031e16a8913ba003.tar.bz2
android_packages_apps_Trebuchet-5d2704fbb0a7bb4763d4e2ee031e16a8913ba003.zip
Clean up dead, ugly and wrong code in icon and widget preview loading
Removed and fixed serveral instances of dead code and small bugs that grew in the widget preloading logic, discovered while chasing a bug. Bug: 12525890 Change-Id: I22e03eccecc07b73388cfd3c8462d947601c6e54
Diffstat (limited to 'src/com/android/launcher3/WidgetPreviewLoader.java')
-rw-r--r--src/com/android/launcher3/WidgetPreviewLoader.java54
1 files changed, 25 insertions, 29 deletions
diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java
index 3db0b51ad..1a67987b4 100644
--- a/src/com/android/launcher3/WidgetPreviewLoader.java
+++ b/src/com/android/launcher3/WidgetPreviewLoader.java
@@ -127,13 +127,13 @@ public class WidgetPreviewLoader {
private int mAppIconSize;
private IconCache mIconCache;
- private final float sWidgetPreviewIconPaddingPercentage = 0.25f;
+ private static final float sWidgetPreviewIconPaddingPercentage = 0.25f;
private CacheDb mDb;
- private HashMap<String, WeakReference<Bitmap>> mLoadedPreviews;
- private ArrayList<SoftReference<Bitmap>> mUnusedBitmaps;
- private static HashSet<String> sInvalidPackages;
+ private final HashMap<String, WeakReference<Bitmap>> mLoadedPreviews;
+ private final ArrayList<SoftReference<Bitmap>> mUnusedBitmaps;
+ private final static HashSet<String> sInvalidPackages;
static {
sInvalidPackages = new HashSet<String>();
@@ -184,18 +184,19 @@ public class WidgetPreviewLoader {
final String name = getObjectName(o);
final String packageName = getObjectPackage(o);
// check if the package is valid
- boolean packageValid = true;
synchronized(sInvalidPackages) {
- packageValid = !sInvalidPackages.contains(packageName);
- }
- if (!packageValid) {
- return null;
+ boolean packageValid = !sInvalidPackages.contains(packageName);
+ if (!packageValid) {
+ return null;
+ }
}
- if (packageValid) {
- synchronized(mLoadedPreviews) {
- // check if it exists in our existing cache
- if (mLoadedPreviews.containsKey(name) && mLoadedPreviews.get(name).get() != null) {
- return mLoadedPreviews.get(name).get();
+ synchronized(mLoadedPreviews) {
+ // check if it exists in our existing cache
+ if (mLoadedPreviews.containsKey(name)) {
+ WeakReference<Bitmap> bitmapReference = mLoadedPreviews.get(name);
+ Bitmap bitmap = bitmapReference.get();
+ if (bitmap != null) {
+ return bitmap;
}
}
}
@@ -203,11 +204,13 @@ public class WidgetPreviewLoader {
Bitmap unusedBitmap = null;
synchronized(mUnusedBitmaps) {
// not in cache; we need to load it from the db
- while ((unusedBitmap == null || !unusedBitmap.isMutable() ||
- unusedBitmap.getWidth() != mPreviewBitmapWidth ||
- unusedBitmap.getHeight() != mPreviewBitmapHeight)
- && mUnusedBitmaps.size() > 0) {
- unusedBitmap = mUnusedBitmaps.remove(0).get();
+ while (unusedBitmap == null && mUnusedBitmaps.size() > 0) {
+ Bitmap candidate = mUnusedBitmaps.remove(0).get();
+ if (candidate != null && candidate.isMutable() &&
+ candidate.getWidth() == mPreviewBitmapWidth &&
+ candidate.getHeight() == mPreviewBitmapHeight) {
+ unusedBitmap = candidate;
+ }
}
if (unusedBitmap != null) {
final Canvas c = mCachedAppWidgetPreviewCanvas.get();
@@ -221,12 +224,7 @@ public class WidgetPreviewLoader {
unusedBitmap = Bitmap.createBitmap(mPreviewBitmapWidth, mPreviewBitmapHeight,
Bitmap.Config.ARGB_8888);
}
-
- Bitmap preview = null;
-
- if (packageValid) {
- preview = readFromDb(name, unusedBitmap);
- }
+ Bitmap preview = readFromDb(name, unusedBitmap);
if (preview != null) {
synchronized(mLoadedPreviews) {
@@ -520,13 +518,11 @@ public class WidgetPreviewLoader {
previewWidth = previewDrawableWidth * cellHSpan;
previewHeight = previewDrawableHeight * cellVSpan;
- defaultPreview = Bitmap.createBitmap(previewWidth, previewHeight,
- Config.ARGB_8888);
+ defaultPreview = Bitmap.createBitmap(previewWidth, previewHeight, Config.ARGB_8888);
final Canvas c = mCachedAppWidgetPreviewCanvas.get();
c.setBitmap(defaultPreview);
previewDrawable.setBounds(0, 0, previewWidth, previewHeight);
- previewDrawable.setTileModeXY(Shader.TileMode.REPEAT,
- Shader.TileMode.REPEAT);
+ previewDrawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
previewDrawable.draw(c);
c.setBitmap(null);