summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/HardwareRenderer.java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-03-07 22:43:02 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-03-07 22:43:02 -0800
commitd00353fe3191571a6773ef2d11921cfcff260bc4 (patch)
tree843919e8af3c0142b791a90941fe848e591832a7 /core/java/android/view/HardwareRenderer.java
parentbd3d019cc66237c23ab0658ff80aa7923e84b239 (diff)
parentbc8a8e8c926115cb7b3910d016e5cff12b0f7b0a (diff)
downloadframeworks_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.java17
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 " +