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

Commit 316a4376 authored by Roman Birg's avatar Roman Birg Committed by Danny Baumann
Browse files

Revert "Allow custom density setting"

This is not the correct way to implement density scaling. It breaks
compatibility with old applications. We can leverage WindowManager's
density functions to provide this functionality without breaking
anything.

This reverts commits 7f1bf5c5 and
1dfc43a0.

Change-Id: Ief7151e67ea6275239f4f82280bf7421c9b4f142
parent 164fba7c
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -272,7 +272,6 @@ public class Resources {
            CompatibilityInfo compatInfo, IBinder token) {
        mAssets = assets;
        mMetrics.setToDefaults();
        mMetrics.updateDensity();
        if (compatInfo != null) {
            mCompatibilityInfo = compatInfo;
        }
@@ -1917,9 +1916,6 @@ 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();
                }
            }
            mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;

@@ -2401,7 +2397,7 @@ public class Resources {
            }
            sPreloaded = true;
            mPreloading = true;
            sPreloadedDensity = DisplayMetrics.getDeviceDensity();
            sPreloadedDensity = DisplayMetrics.DENSITY_DEVICE;
            mConfiguration.densityDpi = sPreloadedDensity;
            updateConfiguration(null, null);
        }
+8 −27
Original line number Diff line number Diff line
@@ -122,16 +122,7 @@ public class DisplayMetrics {
     * density for a display in {@link #densityDpi}.
     */
    @Deprecated
    public static int DENSITY_DEVICE;

    /** @hide */
    public static int DENSITY_CURRENT;

    static {
        DENSITY_DEVICE = SystemProperties.getInt("qemu.sf.lcd_density", SystemProperties
            .getInt("ro.sf.lcd_density", DENSITY_DEFAULT));
        DENSITY_CURRENT = SystemProperties.getInt("persist.sys.lcd_density", DENSITY_DEVICE);
    }
    public static int DENSITY_DEVICE = getDeviceDensity();

    /**
     * The absolute width of the display in pixels.
@@ -222,20 +213,6 @@ public class DisplayMetrics {
     */
    public float noncompatYdpi;

    /** @hide */
    public void updateDensity() {
        density = DENSITY_CURRENT / (float) DENSITY_DEFAULT;
        densityDpi = DENSITY_CURRENT;
        scaledDensity = density;
        xdpi = DENSITY_CURRENT;
        ydpi = DENSITY_CURRENT;
        noncompatDensity = density;
        noncompatDensityDpi = densityDpi;
        noncompatScaledDensity = scaledDensity;
        noncompatXdpi = xdpi;
        noncompatYdpi = ydpi;
    }

    public DisplayMetrics() {
    }
    
@@ -327,8 +304,12 @@ public class DisplayMetrics {
            ", xdpi=" + xdpi + ", ydpi=" + ydpi + "}";
    }

    /** @hide */
    public static int getDeviceDensity() {
        return DENSITY_CURRENT;
    private static int getDeviceDensity() {
        // qemu.sf.lcd_density can be used to override ro.sf.lcd_density
        // when running in the emulator, allowing for dynamic configurations.
        // The reason for this is that ro.sf.lcd_density is write-once and is
        // set by the init process when it parses build.prop before anything else.
        return SystemProperties.getInt("qemu.sf.lcd_density",
                SystemProperties.getInt("ro.sf.lcd_density", DENSITY_DEFAULT));
    }
}
+0 −2
Original line number Diff line number Diff line
@@ -444,8 +444,6 @@ 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();
        }
    }

+9 −2
Original line number Diff line number Diff line
@@ -81,17 +81,24 @@ public final class Bitmap implements Parcelable {

    private static volatile Matrix sScaleMatrix;

    private static volatile int sDefaultDensity = -1;

    /**
     * For backwards compatibility, allows the app layer to change the default
     * density when running old apps.
     * @hide
     */
    public static void setDefaultDensity(int density) {
        // Ignore
        sDefaultDensity = density;
    }

    static int getDefaultDensity() {
        return DisplayMetrics.getDeviceDensity();
        if (sDefaultDensity >= 0) {
            return sDefaultDensity;
        }
        //noinspection deprecation
        sDefaultDensity = DisplayMetrics.DENSITY_DEVICE;
        return sDefaultDensity;
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -984,7 +984,7 @@ public abstract class Drawable {
        // drawn to the screen.
        if (opts == null) opts = new BitmapFactory.Options();
        opts.inScreenDensity = res != null
                ? res.getDisplayMetrics().noncompatDensityDpi : DisplayMetrics.getDeviceDensity();
                ? res.getDisplayMetrics().noncompatDensityDpi : DisplayMetrics.DENSITY_DEVICE;
        Bitmap  bm = BitmapFactory.decodeResourceStream(res, value, is, pad, opts);
        if (bm != null) {
            byte[] np = bm.getNinePatchChunk();