summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alan Viverette <alanv@google.com> 2016-02-04 16:58:14 -0500
committer Alan Viverette <alanv@google.com> 2016-02-04 16:58:14 -0500
commit2ac46f1bda969b2d042ac35ba89cda3e595d1c4a (patch)
treed78d2d186460fb411b8db7e695304a601c1eba76
parent95085d154b1ea6b4db3ae14d39a1c8c8a6560f78 (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.java14
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);
}
}