diff options
author | Steve Kondik <steve@cyngn.com> | 2015-06-20 18:35:04 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2015-06-29 16:31:52 -0700 |
commit | a805aa2187e57e5b5b8deba72ca9787e68baa6d8 (patch) | |
tree | 3baa87af27a4c0b3fd663eaf8b9279a120c3dfa8 | |
parent | 6a1972ba2fd5e6ebdea86cddff5108a537f7b591 (diff) | |
download | android_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-x | services/core/java/com/android/server/pm/PackageManagerService.java | 36 |
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); |