summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nicolas Roard <nicolasroard@google.com> 2011-10-05 11:35:29 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-10-05 11:35:29 -0700
commitf270a1521c39bb6f47ebd29c1a14d9a33f14d87f (patch)
treef6e3a26aebb885702d22add4f6467782ff4a7045
parent30c845f9ca9e504d4d76099a8be111c99ac669f4 (diff)
parentdc221e01ff25ecf404ed945e1899be1e03a5462f (diff)
Merge "Streamline the layers update codepath. Directly update the layers transform and position. This makes updates faster and less dependent on other webkit work."
-rw-r--r--core/java/android/webkit/WebViewCore.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 63c4d032ddab..440ee79aa0fd 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -518,7 +518,7 @@ public final class WebViewCore {
/**
* Update the layers' content
*/
- private native int nativeUpdateLayers(Region invalRegion);
+ private native boolean nativeUpdateLayers(int baseLayer);
private native boolean nativeFocusBoundsChanged();
@@ -2004,18 +2004,25 @@ public final class WebViewCore {
boolean mFocusSizeChanged;
}
+ DrawData mLastDrawData = null;
+
// Only update the layers' content, not the base surface
// PictureSet.
private void webkitDrawLayers() {
mDrawLayersIsScheduled = false;
- if (mDrawIsScheduled) {
+ if (mDrawIsScheduled || mLastDrawData == null) {
removeMessages(EventHub.WEBKIT_DRAW);
webkitDraw();
return;
}
- DrawData draw = new DrawData();
- draw.mBaseLayer = nativeUpdateLayers(draw.mInvalRegion);
- webkitDraw(draw);
+ // Directly update the layers we last passed to the UI side
+ if (nativeUpdateLayers(mLastDrawData.mBaseLayer)) {
+ // If anything more complex than position has been touched, let's do a full draw
+ webkitDraw();
+ } else {
+ Message.obtain(mWebView.mPrivateHandler,
+ WebView.INVAL_RECT_MSG_ID).sendToTarget();
+ }
}
private void webkitDraw() {
@@ -2032,6 +2039,7 @@ public final class WebViewCore {
}
return;
}
+ mLastDrawData = draw;
webkitDraw(draw);
}