diff options
| author | Mathias Agopian <mathias@google.com> | 2009-05-07 17:40:23 -0700 |
|---|---|---|
| committer | Mathias Agopian <mathias@google.com> | 2009-05-07 17:40:23 -0700 |
| commit | 97b8056c3182a973c67d3c1b196150d4b9e30f3a (patch) | |
| tree | b78a1c6d95b468aa654d1910226ae711250799b5 /libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp | |
| parent | 927d37cb788670b91af0f1a7a93c68046a838d23 (diff) | |
| download | frameworks_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.cpp | 12 |
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"); |
