diff options
author | Romain Guy <romainguy@google.com> | 2011-03-07 22:43:02 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-03-07 22:43:02 -0800 |
commit | d00353fe3191571a6773ef2d11921cfcff260bc4 (patch) | |
tree | 843919e8af3c0142b791a90941fe848e591832a7 /core/java/android/view/HardwareRenderer.java | |
parent | bd3d019cc66237c23ab0658ff80aa7923e84b239 (diff) | |
parent | bc8a8e8c926115cb7b3910d016e5cff12b0f7b0a (diff) | |
download | frameworks_base-d00353fe3191571a6773ef2d11921cfcff260bc4.zip frameworks_base-d00353fe3191571a6773ef2d11921cfcff260bc4.tar.gz frameworks_base-d00353fe3191571a6773ef2d11921cfcff260bc4.tar.bz2 |
am bc8a8e8c: Merge "Add support for partial invalidates in WebView Bug #3461349" into honeycomb-mr1
* commit 'bc8a8e8c926115cb7b3910d016e5cff12b0f7b0a':
Add support for partial invalidates in WebView Bug #3461349
Diffstat (limited to 'core/java/android/view/HardwareRenderer.java')
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index b53aa21..c078c08 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -269,7 +269,7 @@ public abstract class HardwareRenderer { static EGLDisplay sEglDisplay; static EGLConfig sEglConfig; - private static Thread sEglThread; + private static Thread sEglThread; EGLSurface mEglSurface; @@ -284,6 +284,8 @@ public abstract class HardwareRenderer { final boolean mTranslucent; private boolean mDestroyed; + + private final Rect mRedrawClip = new Rect(); GlRenderer(int glVersion, boolean translucent) { mGlVersion = glVersion; @@ -606,8 +608,13 @@ public abstract class HardwareRenderer { DisplayList displayList = view.getDisplayList(); if (displayList != null) { - if (canvas.drawDisplayList(displayList)) { - view.invalidate(); + if (canvas.drawDisplayList(displayList, mRedrawClip)) { + if (mRedrawClip.isEmpty()) { + view.invalidate(); + } else { + view.getParent().invalidateChild(view, mRedrawClip); + } + mRedrawClip.setEmpty(); } } else { // Shouldn't reach here @@ -646,8 +653,8 @@ public abstract class HardwareRenderer { private int checkCurrent() { // TODO: Don't check the current context when we have one per UI thread // TODO: Use a threadlocal flag to know whether the surface has changed - if (sEgl.eglGetCurrentContext() != sEglContext || - sEgl.eglGetCurrentSurface(EGL10.EGL_DRAW) != mEglSurface) { + if (!sEglContext.equals(sEgl.eglGetCurrentContext()) || + !mEglSurface.equals(sEgl.eglGetCurrentSurface(EGL10.EGL_DRAW))) { if (!sEgl.eglMakeCurrent(sEglDisplay, mEglSurface, mEglSurface, sEglContext)) { fallback(true); Log.e(LOG_TAG, "eglMakeCurrent failed " + |