summaryrefslogtreecommitdiffstats
path: root/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2009-05-07 17:40:23 -0700
committerMathias Agopian <mathias@google.com>2009-05-07 17:40:23 -0700
commit97b8056c3182a973c67d3c1b196150d4b9e30f3a (patch)
treeb78a1c6d95b468aa654d1910226ae711250799b5 /libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
parent927d37cb788670b91af0f1a7a93c68046a838d23 (diff)
downloadframeworks_base-97b8056c3182a973c67d3c1b196150d4b9e30f3a.zip
frameworks_base-97b8056c3182a973c67d3c1b196150d4b9e30f3a.tar.gz
frameworks_base-97b8056c3182a973c67d3c1b196150d4b9e30f3a.tar.bz2
add support for update-on-demand in SurfaceFlinger
Diffstat (limited to 'libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp')
-rw-r--r--libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp b/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
index 31db31f..25e351c 100644
--- a/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
+++ b/libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp
@@ -183,9 +183,11 @@ void DisplayHardware::init(uint32_t dpy)
LOGI("extensions: %s", egl_extensions);
LOGI("Client API: %s", eglQueryString(display, EGL_CLIENT_APIS)?:"Not Supported");
- // TODO: get the real "update_on_demand" behavior (probably should be HAL module)
- // FIXME: mFlags |= UPDATE_ON_DEMAND;
+ if (mNativeWindow->isUpdateOnDemand()) {
+ mFlags |= UPDATE_ON_DEMAND;
+ }
+
if (eglGetConfigAttrib(display, config, EGL_CONFIG_CAVEAT, &dummy) == EGL_TRUE) {
if (dummy == EGL_SLOW_CONFIG)
mFlags |= SLOW_CONFIG;
@@ -210,7 +212,7 @@ void DisplayHardware::init(uint32_t dpy)
mDpiX = mNativeWindow->xdpi;
mDpiX = mNativeWindow->ydpi;
- mRefreshRate = mNativeWindow->getDevice()->fps;
+ mRefreshRate = fbDev->fps;
char property[PROPERTY_VALUE_MAX];
if (property_get("ro.sf.lcd_density", property, NULL) <= 0) {
@@ -314,6 +316,10 @@ void DisplayHardware::flip(const Region& dirty) const
b.left, b.top, b.width(), b.height());
}
+ if (mFlags & UPDATE_ON_DEMAND) {
+ mNativeWindow->setUpdateRectangle(dirty.bounds());
+ }
+
mPageFlipCount++;
eglSwapBuffers(dpy, surface);
checkEGLErrors("eglSwapBuffers");