Loading services/surfaceflinger/DisplayHardware/DisplayHardware.cpp +43 −31 Original line number Diff line number Diff line Loading @@ -162,6 +162,46 @@ void DisplayHardware::init(uint32_t dpy) mRefreshRate = fbDev->fps; mNextFakeVSync = 0; if (mDpiX == 0 || mDpiY == 0) { ALOGE("invalid screen resolution from fb HAL (xdpi=%f, ydpi=%f), " "defaulting to 160 dpi", mDpiX, mDpiY); mDpiX = mDpiY = 160; } class Density { static int getDensityFromProperty(char const* propName) { char property[PROPERTY_VALUE_MAX]; int density = 0; if (property_get(propName, property, NULL) > 0) { density = atoi(property); } return density; } public: static int getEmuDensity() { return getDensityFromProperty("qemu.sf.lcd_density"); } static int getBuildDensity() { return getDensityFromProperty("ro.sf.lcd_density"); } }; // The density of the device is provided by a build property mDensity = Density::getBuildDensity() / 160.0f; if (mDensity == 0) { // the build doesn't provide a density -- this is wrong! // use xdpi instead ALOGE("ro.sf.lcd_density must be defined as a build property"); mDensity = mDpiX / 160.0f; } if (Density::getEmuDensity()) { // if "qemu.sf.lcd_density" is specified, it overrides everything mDpiX = mDpiY = mDensity = Density::getEmuDensity(); mDensity /= 160.0f; } /* FIXME: this is a temporary HACK until we are able to report the refresh rate * properly from the HAL. The WindowManagerService now relies on this value. Loading Loading @@ -246,38 +286,10 @@ void DisplayHardware::init(uint32_t dpy) } } /* 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=%.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 = 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 = mDensity = atoi(property); } /* set the actual density scale */ mDensity *= (1.0f / 160.0f); /* * Create our OpenGL ES context */ EGLint contextAttributes[] = { #ifdef EGL_IMG_context_priority #ifdef HAS_CONTEXT_PRIORITY Loading services/surfaceflinger/SurfaceFlinger.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -1680,13 +1680,15 @@ void SurfaceFlinger::dumpAllLocked( " transaction-flags : %08x\n" " refresh-rate : %f fps\n" " x-dpi : %f\n" " y-dpi : %f\n", " y-dpi : %f\n" " density : %f\n", mLastSwapBufferTime/1000.0, mLastTransactionTime/1000.0, mTransactionFlags, hw.getRefreshRate(), hw.getDpiX(), hw.getDpiY()); hw.getDpiY(), hw.getDensity()); result.append(buffer); snprintf(buffer, SIZE, " eglSwapBuffers time: %f us\n", Loading Loading
services/surfaceflinger/DisplayHardware/DisplayHardware.cpp +43 −31 Original line number Diff line number Diff line Loading @@ -162,6 +162,46 @@ void DisplayHardware::init(uint32_t dpy) mRefreshRate = fbDev->fps; mNextFakeVSync = 0; if (mDpiX == 0 || mDpiY == 0) { ALOGE("invalid screen resolution from fb HAL (xdpi=%f, ydpi=%f), " "defaulting to 160 dpi", mDpiX, mDpiY); mDpiX = mDpiY = 160; } class Density { static int getDensityFromProperty(char const* propName) { char property[PROPERTY_VALUE_MAX]; int density = 0; if (property_get(propName, property, NULL) > 0) { density = atoi(property); } return density; } public: static int getEmuDensity() { return getDensityFromProperty("qemu.sf.lcd_density"); } static int getBuildDensity() { return getDensityFromProperty("ro.sf.lcd_density"); } }; // The density of the device is provided by a build property mDensity = Density::getBuildDensity() / 160.0f; if (mDensity == 0) { // the build doesn't provide a density -- this is wrong! // use xdpi instead ALOGE("ro.sf.lcd_density must be defined as a build property"); mDensity = mDpiX / 160.0f; } if (Density::getEmuDensity()) { // if "qemu.sf.lcd_density" is specified, it overrides everything mDpiX = mDpiY = mDensity = Density::getEmuDensity(); mDensity /= 160.0f; } /* FIXME: this is a temporary HACK until we are able to report the refresh rate * properly from the HAL. The WindowManagerService now relies on this value. Loading Loading @@ -246,38 +286,10 @@ void DisplayHardware::init(uint32_t dpy) } } /* 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=%.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 = 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 = mDensity = atoi(property); } /* set the actual density scale */ mDensity *= (1.0f / 160.0f); /* * Create our OpenGL ES context */ EGLint contextAttributes[] = { #ifdef EGL_IMG_context_priority #ifdef HAS_CONTEXT_PRIORITY Loading
services/surfaceflinger/SurfaceFlinger.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -1680,13 +1680,15 @@ void SurfaceFlinger::dumpAllLocked( " transaction-flags : %08x\n" " refresh-rate : %f fps\n" " x-dpi : %f\n" " y-dpi : %f\n", " y-dpi : %f\n" " density : %f\n", mLastSwapBufferTime/1000.0, mLastTransactionTime/1000.0, mTransactionFlags, hw.getRefreshRate(), hw.getDpiX(), hw.getDpiY()); hw.getDpiY(), hw.getDensity()); result.append(buffer); snprintf(buffer, SIZE, " eglSwapBuffers time: %f us\n", Loading