From 6fc0a9bd4bdd3ae4a09ae033f68c04fecfc35991 Mon Sep 17 00:00:00 2001 From: Dima Zavin Date: Wed, 21 Mar 2012 23:37:46 -0700 Subject: [PATCH] displayhardware: fix not obeying ro.sf.lcd_density when specified Change-Id: I71efd6aebfdb0323b07327f5e448a5cb5eb0fad6 Signed-off-by: Dima Zavin --- .../DisplayHardware/DisplayHardware.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp b/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp index 3a0ff7156..92d619d5b 100644 --- a/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp +++ b/services/surfaceflinger/DisplayHardware/DisplayHardware.cpp @@ -245,27 +245,33 @@ void DisplayHardware::init(uint32_t dpy) mFlags |= BUFFER_PRESERVED; } } - + + /* use the xdpi as our density baseline */ + mDensity = mDpiX; + /* Read density from build-specific ro.sf.lcd_density property * except if it is overridden by qemu.sf.lcd_density. */ if (property_get("qemu.sf.lcd_density", property, NULL) <= 0) { if (property_get("ro.sf.lcd_density", property, NULL) <= 0) { if (mDpiX && mDpiY) { - ALOGI("Using density info from display: xdpi=%d ydpi=%d\n", + ALOGI("Using density info from display: xdpi=%.1f ydpi=%.1f\n", mDpiX, mDpiY); } else { ALOGW("No display dpi and ro.sf.lcd_density not defined, using 160 dpi by default."); - mDpiX = mDpiY = 160; + mDpiX = mDpiY = mDensity = 160; } + } else { + /* force density to what the build requested */ + mDensity = atoi(property); } } else { /* for the emulator case, reset the dpi values too */ - mDpiX = mDpiY = atoi(property); + mDpiX = mDpiY = mDensity = atoi(property); } - /* use the xdpi as our density baseline */ - mDensity = mDpiX * (1.0f / 160.0f); + /* set the actual density scale */ + mDensity *= (1.0f / 160.0f); /* * Create our OpenGL ES context