From 432b713c9442a4c0e1e4d400fada0c44dc17e786 Mon Sep 17 00:00:00 2001 From: Mike Cleron Date: Thu, 24 Sep 2009 15:28:29 -0700 Subject: [PATCH] Fix bug 2129190 The context used by the status bar (i.e., the system context) was not properly initialized to have the right ApplicationInfo inside its PackageInfo. This eventually caused it to believe that it was running at 160dpi. Kudos to Dianne for figuring this out. --- core/java/android/app/ActivityThread.java | 13 ++++++++++--- .../android/server/am/ActivityManagerService.java | 2 ++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 6acd66523c552..65d6eb9762f5c 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -292,9 +292,9 @@ public final class ActivityThread { } public PackageInfo(ActivityThread activityThread, String name, - Context systemContext) { + Context systemContext, ApplicationInfo info) { mActivityThread = activityThread; - mApplicationInfo = new ApplicationInfo(); + mApplicationInfo = info != null ? info : new ApplicationInfo(); mApplicationInfo.packageName = name; mPackageName = name; mAppDir = null; @@ -2202,7 +2202,7 @@ public final class ActivityThread { if (mSystemContext == null) { ApplicationContext context = ApplicationContext.createSystemContext(this); - PackageInfo info = new PackageInfo(this, "android", context); + PackageInfo info = new PackageInfo(this, "android", context, null); context.init(info, null, this); context.getResources().updateConfiguration( getConfiguration(), getDisplayMetricsLocked(false)); @@ -2214,6 +2214,13 @@ public final class ActivityThread { return mSystemContext; } + public void installSystemApplicationInfo(ApplicationInfo info) { + synchronized (this) { + ApplicationContext context = getSystemContext(); + context.init(new PackageInfo(this, "android", context, info), null, this); + } + } + void scheduleGcIdler() { if (!mGcIdlerScheduled) { mGcIdlerScheduled = true; diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 750c44e4d2dd0..e953b81b93adb 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -1221,6 +1221,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen ApplicationInfo info = mSelf.mContext.getPackageManager().getApplicationInfo( "android", STOCK_PM_FLAGS); + mSystemThread.installSystemApplicationInfo(info); + synchronized (mSelf) { ProcessRecord app = mSelf.newProcessRecordLocked( mSystemThread.getApplicationThread(), info,