Loading core/java/android/content/res/CompatibilityInfo.java +11 −9 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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; Loading Loading @@ -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"); Loading core/java/android/content/res/Resources.java +10 −13 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading @@ -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) { Loading core/java/android/util/DisplayMetrics.java +34 −6 Original line number Diff line number Diff line Loading @@ -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() { } Loading @@ -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() { Loading @@ -150,8 +178,8 @@ public class DisplayMetrics { scaledDensity = density; xdpi = DENSITY_DEVICE; ydpi = DENSITY_DEVICE; unscaledWidthPixels = 0; unscaledHeightPixels = 0; noncompatWidthPixels = 0; noncompatHeightPixels = 0; } @Override Loading core/java/android/view/Display.java +9 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() { Loading services/java/com/android/server/wm/WindowManagerService.java +5 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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, Loading Loading
core/java/android/content/res/CompatibilityInfo.java +11 −9 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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; Loading Loading @@ -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"); Loading
core/java/android/content/res/Resources.java +10 −13 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); Loading @@ -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) { Loading
core/java/android/util/DisplayMetrics.java +34 −6 Original line number Diff line number Diff line Loading @@ -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() { } Loading @@ -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() { Loading @@ -150,8 +178,8 @@ public class DisplayMetrics { scaledDensity = density; xdpi = DENSITY_DEVICE; ydpi = DENSITY_DEVICE; unscaledWidthPixels = 0; unscaledHeightPixels = 0; noncompatWidthPixels = 0; noncompatHeightPixels = 0; } @Override Loading
core/java/android/view/Display.java +9 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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() { Loading
services/java/com/android/server/wm/WindowManagerService.java +5 −5 Original line number Diff line number Diff line Loading @@ -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; } Loading Loading @@ -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, Loading