summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2011-10-04 18:32:39 -0700
committerDianne Hackborn <hackbod@google.com>2011-10-04 19:17:49 -0700
commit836e262aa8e2f66548231ab11eb3b3e91d0e7901 (patch)
treeda21b163196da2ca737bc305d43c070ef3d4429d /core/java/android
parenta1aebdf787443413ba870fc9203639405a5ff7bf (diff)
downloadframeworks_base-836e262aa8e2f66548231ab11eb3b3e91d0e7901.zip
frameworks_base-836e262aa8e2f66548231ab11eb3b3e91d0e7901.tar.gz
frameworks_base-836e262aa8e2f66548231ab11eb3b3e91d0e7901.tar.bz2
Fix issue #5348948: Third Party app "Byki Turkish" shows...
...a tiny dialog (works fine in GB and HC) I found two problems: - When first binding an application, we were not correctly computing the compat configuration. - When retrieving the display metrics to hand to Resources, we were using the one with compat applied. This is not right, because Resources will apply the compat itself, so in some cases the compat scaling was applied twice. Change-Id: I22c9cfed9e271290c1a7544fa3ffa54a2e65daf9
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/ActivityThread.java29
-rw-r--r--core/java/android/view/Display.java2
2 files changed, 19 insertions, 12 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 99aae37..d2facdc 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -1478,7 +1478,7 @@ public final class ActivityThread {
}
//Slog.i(TAG, "Resource: key=" + key + ", display metrics=" + metrics);
- DisplayMetrics metrics = getDisplayMetricsLocked(compInfo, false);
+ DisplayMetrics metrics = getDisplayMetricsLocked(null, false);
r = new Resources(assets, metrics, getConfiguration(), compInfo);
if (false) {
Slog.i(TAG, "Created app resources " + resDir + " " + r + ": "
@@ -3476,7 +3476,7 @@ public final class ActivityThread {
return false;
}
int changes = mResConfiguration.updateFrom(config);
- DisplayMetrics dm = getDisplayMetricsLocked(compat, true);
+ DisplayMetrics dm = getDisplayMetricsLocked(null, true);
if (compat != null && (mResCompatibilityInfo == null ||
!mResCompatibilityInfo.equals(compat))) {
@@ -3517,7 +3517,20 @@ public final class ActivityThread {
return changes != 0;
}
-
+
+ final Configuration applyCompatConfiguration() {
+ Configuration config = mConfiguration;
+ if (mCompatConfiguration == null) {
+ mCompatConfiguration = new Configuration();
+ }
+ mCompatConfiguration.setTo(mConfiguration);
+ if (mResCompatibilityInfo != null && !mResCompatibilityInfo.supportsScreen()) {
+ mResCompatibilityInfo.applyToConfiguration(mCompatConfiguration);
+ config = mCompatConfiguration;
+ }
+ return config;
+ }
+
final void handleConfigurationChanged(Configuration config, CompatibilityInfo compat) {
ArrayList<ComponentCallbacks2> callbacks = null;
@@ -3546,14 +3559,7 @@ public final class ActivityThread {
return;
}
mConfiguration.updateFrom(config);
- if (mCompatConfiguration == null) {
- mCompatConfiguration = new Configuration();
- }
- mCompatConfiguration.setTo(mConfiguration);
- if (mResCompatibilityInfo != null && !mResCompatibilityInfo.supportsScreen()) {
- mResCompatibilityInfo.applyToConfiguration(mCompatConfiguration);
- config = mCompatConfiguration;
- }
+ config = applyCompatConfiguration();
callbacks = collectComponentCallbacksLocked(false, config);
}
@@ -3752,6 +3758,7 @@ public final class ActivityThread {
* in AppBindData can be safely assumed to be up to date
*/
applyConfigurationToResourcesLocked(data.config, data.compatInfo);
+ applyCompatConfiguration();
data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo);
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 3bd0f76..7945441 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -30,7 +30,7 @@ import android.util.Slog;
*/
public class Display {
static final String TAG = "Display";
- static final boolean DEBUG_DISPLAY_SIZE = false;
+ static final boolean DEBUG_DISPLAY_SIZE = true;
/**
* The default Display id.