diff options
| author | Romain Guy <romainguy@google.com> | 2011-03-07 18:06:46 -0800 |
|---|---|---|
| committer | Romain Guy <romainguy@google.com> | 2011-03-07 18:09:03 -0800 |
| commit | cabfcc1364eb7e4de0b15b3574fba45027b45cfc (patch) | |
| tree | f38e237ba2009dcacb5082a99928aad379a7adc0 /core/java/android/webkit/WebView.java | |
| parent | 9b7146db6d9c0586b98b062fbcdb3fac6cc54d19 (diff) | |
| download | frameworks_base-cabfcc1364eb7e4de0b15b3574fba45027b45cfc.zip frameworks_base-cabfcc1364eb7e4de0b15b3574fba45027b45cfc.tar.gz frameworks_base-cabfcc1364eb7e4de0b15b3574fba45027b45cfc.tar.bz2 | |
Add support for partial invalidates in WebView
Bug #3461349
This change also fixes two bugs that prevented partial invalidates
from working with other views. Both bugs were in our EGL implementation:
they were preventing the caller from comparing the current context/surface
with another context/surface. This was causing HardwareRenderer to always
redraw the entire screen.
Change-Id: I33e096b304d4a0b7e6c8f92930f71d2ece9bebf5
Diffstat (limited to 'core/java/android/webkit/WebView.java')
| -rw-r--r-- | core/java/android/webkit/WebView.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index f0a3a0f..eb7269b 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -351,7 +351,8 @@ public class WebView extends AbsoluteLayout private ZoomManager mZoomManager; - private Rect mGLRectViewport = new Rect(); + private final Rect mGLRectViewport = new Rect(); + private final Rect mViewRectViewport = new Rect(); private boolean mGLViewportEmpty = false; /** @@ -4152,7 +4153,7 @@ public class WebView extends AbsoluteLayout if (canvas.isHardwareAccelerated()) { int functor = nativeGetDrawGLFunction(mGLViewportEmpty ? null : mGLRectViewport, - getScale(), extras); + mGLViewportEmpty ? null : mViewRectViewport, getScale(), extras); ((HardwareCanvas) canvas).callDrawGLFunction(functor); } else { DrawFilter df = null; @@ -5258,6 +5259,7 @@ public class WebView extends AbsoluteLayout // Then need to invert the Y axis, just for GL View rootView = getRootView(); int rootViewHeight = rootView.getHeight(); + mViewRectViewport.set(mGLRectViewport); int savedWebViewBottom = mGLRectViewport.bottom; mGLRectViewport.bottom = rootViewHeight - mGLRectViewport.top - getVisibleTitleHeight(); mGLRectViewport.top = rootViewHeight - savedWebViewBottom; @@ -5265,7 +5267,8 @@ public class WebView extends AbsoluteLayout } else { mGLViewportEmpty = true; } - nativeUpdateDrawGLFunction(mGLViewportEmpty ? null : mGLRectViewport); + nativeUpdateDrawGLFunction(mGLViewportEmpty ? null : mGLRectViewport, + mGLViewportEmpty ? null : mViewRectViewport); } /** @@ -8531,8 +8534,9 @@ public class WebView extends AbsoluteLayout boolean splitIfNeeded); private native void nativeDumpDisplayTree(String urlOrNull); private native boolean nativeEvaluateLayersAnimations(); - private native int nativeGetDrawGLFunction(Rect rect, float scale, int extras); - private native void nativeUpdateDrawGLFunction(Rect rect); + private native int nativeGetDrawGLFunction(Rect rect, Rect viewRect, + float scale, int extras); + private native void nativeUpdateDrawGLFunction(Rect rect, Rect viewRect); private native boolean nativeDrawGL(Rect rect, float scale, int extras); private native void nativeExtendSelection(int x, int y); private native int nativeFindAll(String findLower, String findUpper, |
