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

Commit f61367b4 authored by Roman Birg's avatar Roman Birg
Browse files

Better density scaling compatibility



Don't apply custom DPI setting to old apps which must be scaled up

Change-Id: I4e1523287040af48fcbcfe05550db5ee49c4741e
Signed-off-by: default avatarRoman Birg <roman@cyngn.com>
parent 118aa615
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -272,7 +272,7 @@ public class Resources {
            CompatibilityInfo compatInfo, IBinder token) {
        mAssets = assets;
        mMetrics.setToDefaults();
        mMetrics.updateDensity();
        mMetrics.forcePersistedDensity();
        if (compatInfo != null) {
            mCompatibilityInfo = compatInfo;
        }
@@ -1917,8 +1917,14 @@ public class Resources {
            if (mConfiguration.densityDpi != Configuration.DENSITY_DPI_UNDEFINED) {
                mMetrics.densityDpi = mConfiguration.densityDpi;
                mMetrics.density = mConfiguration.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
                if (mCompatibilityInfo.equals(CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO)) {
                    mMetrics.updateDensity();

                final boolean densityScalingSupported = !mCompatibilityInfo.isScalingRequired()
                        || mCompatibilityInfo.alwaysSupportsScreen();
                final boolean appScalingRequired = mCompatibilityInfo.neverSupportsScreen()
                        && mCompatibilityInfo.isScalingRequired();
                if (densityScalingSupported || appScalingRequired ||
                        mCompatibilityInfo.equals(CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO)) {
                    mMetrics.forcePersistedDensity();
                }
            }
            mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;
+1 −1
Original line number Diff line number Diff line
@@ -223,7 +223,7 @@ public class DisplayMetrics {
    public float noncompatYdpi;

    /** @hide */
    public void updateDensity() {
    public void forcePersistedDensity() {
        density = DENSITY_CURRENT / (float) DENSITY_DEFAULT;
        densityDpi = DENSITY_CURRENT;
        scaledDensity = density;
+3 −2
Original line number Diff line number Diff line
@@ -444,8 +444,9 @@ public final class DisplayInfo implements Parcelable {

        if (!compatInfo.equals(CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO)) {
            compatInfo.applyToDisplayMetrics(outMetrics);
        } else if (type == Display.TYPE_BUILT_IN) {
            outMetrics.updateDensity();
        } else if (type == Display.TYPE_BUILT_IN
                && (compatInfo.alwaysSupportsScreen() && !compatInfo.isScalingRequired())) {
            outMetrics.forcePersistedDensity();
        }
    }