summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoe Onorato <joeo@android.com>2010-05-05 11:07:12 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-05-05 11:07:12 -0700
commit506c1b49aafbfc3a68d53e5fbbed46c23723fb28 (patch)
tree8e76f63d63cf8ea674a70bce29f14f5ae7ef39b9 /src
parent9fed4059723815be374de9be531fb19725a0dbd7 (diff)
parentfad1fb5ed46473af0a6da4324e9e3fa45bd9f6e8 (diff)
downloadandroid_packages_apps_Trebuchet-506c1b49aafbfc3a68d53e5fbbed46c23723fb28.tar.gz
android_packages_apps_Trebuchet-506c1b49aafbfc3a68d53e5fbbed46c23723fb28.tar.bz2
android_packages_apps_Trebuchet-506c1b49aafbfc3a68d53e5fbbed46c23723fb28.zip
am fad1fb5e: Tweak locking in launcher so mLock isn\'t held while the slow stuff happens.
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher2/IconCache.java28
-rw-r--r--src/com/android/launcher2/LauncherModel.java5
2 files changed, 19 insertions, 14 deletions
diff --git a/src/com/android/launcher2/IconCache.java b/src/com/android/launcher2/IconCache.java
index 04762e944..4bb7d08c0 100644
--- a/src/com/android/launcher2/IconCache.java
+++ b/src/com/android/launcher2/IconCache.java
@@ -100,24 +100,28 @@ public class IconCache {
}
public Bitmap getIcon(Intent intent) {
- final ResolveInfo resolveInfo = mPackageManager.resolveActivity(intent, 0);
- ComponentName component = intent.getComponent();
+ synchronized (mCache) {
+ final ResolveInfo resolveInfo = mPackageManager.resolveActivity(intent, 0);
+ ComponentName component = intent.getComponent();
- if (resolveInfo == null || component == null) {
- return mDefaultIcon;
- }
+ if (resolveInfo == null || component == null) {
+ return mDefaultIcon;
+ }
- CacheEntry entry = cacheLocked(component, resolveInfo);
- return entry.icon;
+ CacheEntry entry = cacheLocked(component, resolveInfo);
+ return entry.icon;
+ }
}
public Bitmap getIcon(ComponentName component, ResolveInfo resolveInfo) {
- if (resolveInfo == null || component == null) {
- return null;
- }
+ synchronized (mCache) {
+ if (resolveInfo == null || component == null) {
+ return null;
+ }
- CacheEntry entry = cacheLocked(component, resolveInfo);
- return entry.icon;
+ CacheEntry entry = cacheLocked(component, resolveInfo);
+ return entry.icon;
+ }
}
private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info) {
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index d5b585900..a8672008c 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -73,6 +73,7 @@ public class LauncherModel extends BroadcastReceiver {
private boolean mBeforeFirstLoad = true; // only access this from main thread
private WeakReference<Callbacks> mCallbacks;
+ private final Object mAllAppsListLock = new Object();
private AllAppsList mAllAppsList;
private IconCache mIconCache;
@@ -306,7 +307,7 @@ public class LauncherModel extends BroadcastReceiver {
ArrayList<ApplicationInfo> removed = null;
ArrayList<ApplicationInfo> modified = null;
- synchronized (mLock) {
+ synchronized (mAllAppsListLock) {
if (mBeforeFirstLoad) {
// If we haven't even loaded yet, don't bother, since we'll just pick
// up the changes.
@@ -1047,7 +1048,7 @@ public class LauncherModel extends BroadcastReceiver {
int i=0;
int batchSize = -1;
while (i < N && !mStopped) {
- synchronized (mLock) {
+ synchronized (mAllAppsListLock) {
if (i == 0) {
// This needs to happen inside the same lock block as when we
// prepare the first batch for bindAllApplications. Otherwise