OSDN Git Service

surfaceflinger: use display dpi if not forced with ro.sf.lcd_nensity
authorDima Zavin <dima@android.com>
Thu, 15 Mar 2012 00:15:10 +0000 (17:15 -0700)
committerDima Zavin <dima@android.com>
Thu, 15 Mar 2012 00:15:10 +0000 (17:15 -0700)
Change-Id: I52c4b872e0f2c088c2a6ada7a5bb15db071f0002
Signed-off-by: Dima Zavin <dima@android.com>
services/surfaceflinger/DisplayHardware/DisplayHardware.cpp

index 9baae80..3a0ff71 100644 (file)
@@ -251,15 +251,21 @@ void DisplayHardware::init(uint32_t dpy)
      */
     if (property_get("qemu.sf.lcd_density", property, NULL) <= 0) {
         if (property_get("ro.sf.lcd_density", property, NULL) <= 0) {
-            ALOGW("ro.sf.lcd_density not defined, using 160 dpi by default.");
-            strcpy(property, "160");
+            if (mDpiX && mDpiY) {
+                ALOGI("Using density info from display: xdpi=%d ydpi=%d\n",
+                      mDpiX, mDpiY);
+            } else {
+                ALOGW("No display dpi and ro.sf.lcd_density not defined, using 160 dpi by default.");
+                mDpiX = mDpiY = 160;
+            }
         }
     } else {
         /* for the emulator case, reset the dpi values too */
         mDpiX = mDpiY = atoi(property);
     }
-    mDensity = atoi(property) * (1.0f/160.0f);
 
+    /* use the xdpi as our density baseline */
+    mDensity = mDpiX * (1.0f / 160.0f);
 
     /*
      * Create our OpenGL ES context