summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Kondik <steve@cyngn.com>2015-06-20 18:35:04 -0700
committerGerrit Code Review <gerrit@cyanogenmod.org>2015-06-29 16:31:52 -0700
commita805aa2187e57e5b5b8deba72ca9787e68baa6d8 (patch)
tree3baa87af27a4c0b3fd663eaf8b9279a120c3dfa8
parent6a1972ba2fd5e6ebdea86cddff5108a537f7b591 (diff)
downloadandroid_frameworks_base-a805aa2187e57e5b5b8deba72ca9787e68baa6d8.tar.gz
android_frameworks_base-a805aa2187e57e5b5b8deba72ca9787e68baa6d8.tar.bz2
android_frameworks_base-a805aa2187e57e5b5b8deba72ca9787e68baa6d8.zip
themes: Load icon packs outside the big lock
* Don't stop the world when loading an icon pack, as it can take a bit of time and cause ANR if the system is busy. Change-Id: I653c2741ab55f73c301b6425f84f255ceb48e8e4 (cherry picked from commit 7fa62bb2edc33fe26f6e95f153395455883a9b66)
-rwxr-xr-xservices/core/java/com/android/server/pm/PackageManagerService.java36
1 files changed, 18 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index c7ee7b50b2b..b13e302dbc0 100755
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -14630,26 +14630,26 @@ public class PackageManagerService extends IPackageManager.Stub {
"could not update icon mapping because caller "
+ "does not have change config permission");
- synchronized (mPackages) {
- ThemeUtils.clearIconCache();
- if (pkgName == null) {
- clearIconMapping();
- return;
- }
- mIconPackHelper = new IconPackHelper(mContext);
- try {
- mIconPackHelper.loadIconPack(pkgName);
- } catch(NameNotFoundException e) {
- Log.e(TAG, "Unable to find icon pack: " + pkgName);
- clearIconMapping();
- return;
- }
+ ThemeUtils.clearIconCache();
+ if (pkgName == null) {
+ clearIconMapping();
+ return;
+ }
+ mIconPackHelper = new IconPackHelper(mContext);
+ try {
+ mIconPackHelper.loadIconPack(pkgName);
+ } catch(NameNotFoundException e) {
+ Log.e(TAG, "Unable to find icon pack: " + pkgName);
+ clearIconMapping();
+ return;
+ }
- for (Activity activity : mActivities.mActivities.values()) {
- activity.info.themedIcon =
- mIconPackHelper.getResourceIdForActivityIcon(activity.info);
- }
+ for (Activity activity : mActivities.mActivities.values()) {
+ activity.info.themedIcon =
+ mIconPackHelper.getResourceIdForActivityIcon(activity.info);
+ }
+ synchronized (mPackages) {
for (Package pkg : mPackages.values()) {
pkg.applicationInfo.themedIcon =
mIconPackHelper.getResourceIdForApp(pkg.packageName);