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

Commit fa5e3b65 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 2dafe771: Merge "DO NOT MERGE. Fix density compat mode." into honeycomb-mr2

* commit '2dafe771':
  DO NOT MERGE.  Fix density compat mode.
parents f49e4d3f 2dafe771
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -432,17 +432,17 @@ public class CompatibilityInfo implements Parcelable {
            // compatible with large screens, so diddle it.
            CompatibilityInfo.computeCompatibleScaling(inoutDm, inoutDm);
        } else {
            inoutDm.widthPixels = inoutDm.unscaledWidthPixels;
            inoutDm.heightPixels = inoutDm.unscaledHeightPixels;
            inoutDm.widthPixels = inoutDm.noncompatWidthPixels;
            inoutDm.heightPixels = inoutDm.noncompatHeightPixels;
        }

        if (isScalingRequired()) {
            float invertedRatio = applicationInvertedScale;
            inoutDm.density *= invertedRatio;
            inoutDm.density = inoutDm.noncompatDensity * invertedRatio;
            inoutDm.densityDpi = (int)((inoutDm.density*DisplayMetrics.DENSITY_DEFAULT)+.5f);
            inoutDm.scaledDensity *= invertedRatio;
            inoutDm.xdpi *= invertedRatio;
            inoutDm.ydpi *= invertedRatio;
            inoutDm.scaledDensity = inoutDm.noncompatScaledDensity * invertedRatio;
            inoutDm.xdpi = inoutDm.noncompatXdpi * invertedRatio;
            inoutDm.ydpi = inoutDm.noncompatYdpi * invertedRatio;
            inoutDm.widthPixels = (int) (inoutDm.widthPixels * invertedRatio + 0.5f);
            inoutDm.heightPixels = (int) (inoutDm.heightPixels * invertedRatio + 0.5f);
        }
@@ -471,8 +471,8 @@ public class CompatibilityInfo implements Parcelable {
     * @return Returns the scaling factor for the window.
     */
    public static float computeCompatibleScaling(DisplayMetrics dm, DisplayMetrics outDm) {
        final int width = dm.unscaledWidthPixels;
        final int height = dm.unscaledHeightPixels;
        final int width = dm.noncompatWidthPixels;
        final int height = dm.noncompatHeightPixels;
        int shortSize, longSize;
        if (width < height) {
            shortSize = width;
@@ -532,7 +532,9 @@ public class CompatibilityInfo implements Parcelable {
        sb.append(applicationDensity);
        sb.append("dpi");
        if (isScalingRequired()) {
            sb.append(" scaling");
            sb.append(" ");
            sb.append(applicationScale);
            sb.append("x");
        }
        if (!supportsScreen()) {
            sb.append(" resizing");
+10 −13
Original line number Diff line number Diff line
@@ -1416,6 +1416,7 @@ public class Resources {
            }
            if (metrics != null) {
                mMetrics.setTo(metrics);
            }
            // NOTE: We should re-arrange this code to create a Display
            // with the CompatibilityInfo that is used everywhere we deal
            // with the display in relation to this app, rather than
@@ -1428,11 +1429,6 @@ public class Resources {
            if (mCompatibilityInfo != null) {
                mCompatibilityInfo.applyToDisplayMetrics(mMetrics);
            }
            }
            if (mCompatibilityInfo != null) {
                mCompatibilityInfo.applyToDisplayMetrics(mMetrics);
            }
            mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;
            int configChanges = 0xfffffff;
            if (config != null) {
                mTmpConfig.setTo(config);
@@ -1448,6 +1444,7 @@ public class Resources {
            if (mConfiguration.locale == null) {
                mConfiguration.locale = Locale.getDefault();
            }
            mMetrics.scaledDensity = mMetrics.density * mConfiguration.fontScale;

            String locale = null;
            if (mConfiguration.locale != null) {
+34 −6
Original line number Diff line number Diff line
@@ -119,13 +119,37 @@ public class DisplayMetrics {
     * being applied.
     * @hide
     */
    public int unscaledWidthPixels;
    public int noncompatWidthPixels;
    /**
     * The reported display height prior to any compatibility mode scaling
     * being applied.
     * @hide
     */
    public int unscaledHeightPixels;
    public int noncompatHeightPixels;
    /**
     * The reported display density prior to any compatibility mode scaling
     * being applied.
     * @hide
     */
    public float noncompatDensity;
    /**
     * The reported scaled density prior to any compatibility mode scaling
     * being applied.
     * @hide
     */
    public float noncompatScaledDensity;
    /**
     * The reported display xdpi prior to any compatibility mode scaling
     * being applied.
     * @hide
     */
    public float noncompatXdpi;
    /**
     * The reported display ydpi prior to any compatibility mode scaling
     * being applied.
     * @hide
     */
    public float noncompatYdpi;

    public DisplayMetrics() {
    }
@@ -138,8 +162,12 @@ public class DisplayMetrics {
        scaledDensity = o.scaledDensity;
        xdpi = o.xdpi;
        ydpi = o.ydpi;
        unscaledWidthPixels = o.unscaledWidthPixels;
        unscaledHeightPixels = o.unscaledHeightPixels;
        noncompatWidthPixels = o.noncompatWidthPixels;
        noncompatHeightPixels = o.noncompatHeightPixels;
        noncompatDensity = o.noncompatDensity;
        noncompatScaledDensity = o.noncompatScaledDensity;
        noncompatXdpi = o.noncompatXdpi;
        noncompatYdpi = o.noncompatYdpi;
    }
    
    public void setToDefaults() {
@@ -150,8 +178,8 @@ public class DisplayMetrics {
        scaledDensity = density;
        xdpi = DENSITY_DEVICE;
        ydpi = DENSITY_DEVICE;
        unscaledWidthPixels = 0;
        unscaledHeightPixels = 0;
        noncompatWidthPixels = 0;
        noncompatHeightPixels = 0;
    }

    @Override
+9 −8
Original line number Diff line number Diff line
@@ -107,8 +107,8 @@ public class Display {
                CompatibilityInfo ci;
                if (doCompat && (ci=mCompatibilityInfo.getIfNeeded()) != null) {
                    synchronized (mTmpMetrics) {
                        mTmpMetrics.unscaledWidthPixels = outSize.x;
                        mTmpMetrics.unscaledHeightPixels = outSize.y;
                        mTmpMetrics.noncompatWidthPixels = outSize.x;
                        mTmpMetrics.noncompatHeightPixels = outSize.y;
                        mTmpMetrics.density = mDensity;
                        ci.applyToDisplayMetrics(mTmpMetrics);
                        outSize.x = mTmpMetrics.widthPixels;
@@ -268,14 +268,15 @@ public class Display {
    }

    private void getNonSizeMetrics(DisplayMetrics outMetrics) {
        outMetrics.density      = mDensity;
        outMetrics.densityDpi   = (int)((mDensity*DisplayMetrics.DENSITY_DEFAULT)+.5f);
        outMetrics.scaledDensity= outMetrics.density;
        outMetrics.xdpi         = mDpiX;
        outMetrics.ydpi         = mDpiY;

        outMetrics.unscaledWidthPixels  = outMetrics.widthPixels;
        outMetrics.unscaledHeightPixels = outMetrics.heightPixels;
        outMetrics.noncompatWidthPixels  = outMetrics.widthPixels;
        outMetrics.noncompatHeightPixels = outMetrics.heightPixels;

        outMetrics.density = outMetrics.noncompatDensity = mDensity;
        outMetrics.scaledDensity = outMetrics.noncompatScaledDensity = outMetrics.density;
        outMetrics.xdpi = outMetrics.noncompatXdpi = mDpiX;
        outMetrics.ydpi = outMetrics.noncompatYdpi = mDpiY;
    }

    static IWindowManager getWindowManager() {
+5 −5
Original line number Diff line number Diff line
@@ -5552,10 +5552,10 @@ public class WindowManagerService extends IWindowManager.Stub

    private int reduceCompatConfigWidthSize(int curSize, int rotation, DisplayMetrics dm,
            int dw, int dh) {
        dm.unscaledWidthPixels = mPolicy.getNonDecorDisplayWidth(rotation, dw);
        dm.unscaledHeightPixels = mPolicy.getNonDecorDisplayHeight(rotation, dh);
        dm.noncompatWidthPixels = mPolicy.getNonDecorDisplayWidth(rotation, dw);
        dm.noncompatHeightPixels = mPolicy.getNonDecorDisplayHeight(rotation, dh);
        float scale = CompatibilityInfo.computeCompatibleScaling(dm, null);
        int size = (int)(((dm.unscaledWidthPixels / scale) / dm.density) + .5f);
        int size = (int)(((dm.noncompatWidthPixels / scale) / dm.density) + .5f);
        if (curSize == 0 || size < curSize) {
            curSize = size;
        }
@@ -5630,9 +5630,9 @@ public class WindowManagerService extends IWindowManager.Stub

        // Override display width and height with what we are computing,
        // to be sure they remain consistent.
        dm.widthPixels = dm.unscaledWidthPixels = mAppDisplayWidth
        dm.widthPixels = dm.noncompatWidthPixels = mAppDisplayWidth
                = mPolicy.getNonDecorDisplayWidth(mRotation, dw);
        dm.heightPixels = dm.unscaledHeightPixels = mAppDisplayHeight
        dm.heightPixels = dm.noncompatHeightPixels = mAppDisplayHeight
                = mPolicy.getNonDecorDisplayHeight(mRotation, dh);

        mCompatibleScreenScale = CompatibilityInfo.computeCompatibleScaling(dm,