Update DisplayMetrics even on default display
Fix a bug where the DisplayMetrics wouldn't be updated for a Resources object on the default display. Since multi-window, we want to update all Resources. This didn't always manifest itself due to recreation of assets, which would force an update of DisplayMetrics. Re-use of an AssetManager from the cache would expose the bug. Bug:32133693 Bug:31998629 Test: cts-tradefed run cts --module CtsServicesHostTestCases Change-Id: Ic51ab82710517b87eb995ccf982085dba876ad58
This commit is contained in:
@@ -839,19 +839,19 @@ public class ResourcesManager {
|
||||
tmpConfig = new Configuration();
|
||||
}
|
||||
tmpConfig.setTo(config);
|
||||
if (!isDefaultDisplay) {
|
||||
// Get new DisplayMetrics based on the DisplayAdjustments given
|
||||
// to the ResourcesImpl. Udate a copy if the CompatibilityInfo
|
||||
// changed, because the ResourcesImpl object will handle the
|
||||
// update internally.
|
||||
DisplayAdjustments daj = r.getDisplayAdjustments();
|
||||
if (compat != null) {
|
||||
daj = new DisplayAdjustments(daj);
|
||||
daj.setCompatibilityInfo(compat);
|
||||
}
|
||||
dm = getDisplayMetrics(displayId, daj);
|
||||
applyNonDefaultDisplayMetricsToConfiguration(dm, tmpConfig);
|
||||
|
||||
// Get new DisplayMetrics based on the DisplayAdjustments given
|
||||
// to the ResourcesImpl. Update a copy if the CompatibilityInfo
|
||||
// changed, because the ResourcesImpl object will handle the
|
||||
// update internally.
|
||||
DisplayAdjustments daj = r.getDisplayAdjustments();
|
||||
if (compat != null) {
|
||||
daj = new DisplayAdjustments(daj);
|
||||
daj.setCompatibilityInfo(compat);
|
||||
}
|
||||
dm = getDisplayMetrics(displayId, daj);
|
||||
applyNonDefaultDisplayMetricsToConfiguration(dm, tmpConfig);
|
||||
|
||||
if (hasOverrideConfiguration) {
|
||||
tmpConfig.updateFrom(key.mOverrideConfiguration);
|
||||
}
|
||||
|
||||
@@ -268,6 +268,10 @@ public class DisplayMetrics {
|
||||
}
|
||||
|
||||
public void setTo(DisplayMetrics o) {
|
||||
if (this == o) {
|
||||
return;
|
||||
}
|
||||
|
||||
widthPixels = o.widthPixels;
|
||||
heightPixels = o.heightPixels;
|
||||
density = o.density;
|
||||
|
||||
Reference in New Issue
Block a user