diff options
| author | 2016-02-04 16:58:14 -0500 | |
|---|---|---|
| committer | 2016-02-04 16:58:14 -0500 | |
| commit | 2ac46f1bda969b2d042ac35ba89cda3e595d1c4a (patch) | |
| tree | d78d2d186460fb411b8db7e695304a601c1eba76 | |
| parent | 95085d154b1ea6b4db3ae14d39a1c8c8a6560f78 (diff) | |
Ensure Bitmap.getDefaultDensity() matches DENSITY_DEVICE
Otherwise bitmaps constructed without a target display are incorrectly
scaled by a factor of (DENSITY_DEVICE / DENSITY_DEFAULT) when rendered
to a Canvas whose density has been specified correctly.
Bug: 26817900
Change-Id: I45edfc7c0cbdf84a267d5bedacb0548659ede301
| -rw-r--r-- | core/java/android/app/ActivityThread.java | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 805b2034ff05..6424520df3ec 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4822,14 +4822,12 @@ public final class ActivityThread { } private void updateDefaultDensity() { - if (mCurDefaultDisplayDpi != Configuration.DENSITY_DPI_UNDEFINED - && mCurDefaultDisplayDpi != DisplayMetrics.DENSITY_DEVICE - && !mDensityCompatMode) { - Slog.i(TAG, "Switching default density from " - + DisplayMetrics.DENSITY_DEVICE + " to " - + mCurDefaultDisplayDpi); - DisplayMetrics.DENSITY_DEVICE = mCurDefaultDisplayDpi; - Bitmap.setDefaultDensity(DisplayMetrics.DENSITY_DEFAULT); + final int densityDpi = mCurDefaultDisplayDpi; + if (!mDensityCompatMode + && densityDpi != Configuration.DENSITY_DPI_UNDEFINED + && densityDpi != DisplayMetrics.DENSITY_DEVICE) { + DisplayMetrics.DENSITY_DEVICE = densityDpi; + Bitmap.setDefaultDensity(densityDpi); } } |