Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43097218 authored by Adam Lesinski's avatar Adam Lesinski
Browse files

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
parent dc7280fe
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -839,9 +839,9 @@ 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
                        // to the ResourcesImpl. Update a copy if the CompatibilityInfo
                        // changed, because the ResourcesImpl object will handle the
                        // update internally.
                        DisplayAdjustments daj = r.getDisplayAdjustments();
@@ -851,7 +851,7 @@ public class ResourcesManager {
                        }
                        dm = getDisplayMetrics(displayId, daj);
                        applyNonDefaultDisplayMetricsToConfiguration(dm, tmpConfig);
                        }

                        if (hasOverrideConfiguration) {
                            tmpConfig.updateFrom(key.mOverrideConfiguration);
                        }
+4 −0
Original line number Diff line number Diff line
@@ -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;