summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2012-05-31 17:57:45 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-05-31 17:57:45 -0700
commit53913ed55ce2b5f0d2137b2a7b67eaf7556c0c28 (patch)
tree972a92dc00f15855749000a34b1e0abfb9972fa1 /core/java/android
parentf0e96de863a06bbee2aaf2aeb0f586e2a434aa62 (diff)
parent41ee465734d0006797a8fd36e88976c1e85d161c (diff)
downloadframeworks_base-53913ed55ce2b5f0d2137b2a7b67eaf7556c0c28.zip
frameworks_base-53913ed55ce2b5f0d2137b2a7b67eaf7556c0c28.tar.gz
frameworks_base-53913ed55ce2b5f0d2137b2a7b67eaf7556c0c28.tar.bz2
Merge "Force webview invalidates on unsuccessful functor attach" into jb-dev
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/HardwareRenderer.java10
-rw-r--r--core/java/android/view/ViewRootImpl.java5
-rw-r--r--core/java/android/webkit/WebViewClassic.java5
3 files changed, 14 insertions, 6 deletions
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index f986d15..cba488e 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -457,9 +457,11 @@ public abstract class HardwareRenderer {
* @param functor The native functor to insert in the execution queue.
*
* @see HardwareCanvas#callDrawGLFunction(int)
- * @see #detachFunctor(int)
+ * @see #detachFunctor(int)
+ *
+ * @return true if the functor was attached successfully
*/
- abstract void attachFunctor(View.AttachInfo attachInfo, int functor);
+ abstract boolean attachFunctor(View.AttachInfo attachInfo, int functor);
/**
* Initializes the hardware renderer for the specified surface and setup the
@@ -1227,11 +1229,13 @@ public abstract class HardwareRenderer {
}
@Override
- void attachFunctor(View.AttachInfo attachInfo, int functor) {
+ boolean attachFunctor(View.AttachInfo attachInfo, int functor) {
if (mCanvas != null) {
mCanvas.attachFunctor(functor);
scheduleFunctors(attachInfo);
+ return true;
}
+ return false;
}
/**
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 551b6cc..3138692 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -670,10 +670,11 @@ public final class ViewRootImpl implements ViewParent,
}
}
- public void attachFunctor(int functor) {
+ public boolean attachFunctor(int functor) {
if (mAttachInfo.mHardwareRenderer != null && mAttachInfo.mHardwareRenderer.isEnabled()) {
- mAttachInfo.mHardwareRenderer.attachFunctor(mAttachInfo, functor);
+ return mAttachInfo.mHardwareRenderer.attachFunctor(mAttachInfo, functor);
}
+ return false;
}
public void detachFunctor(int functor) {
diff --git a/core/java/android/webkit/WebViewClassic.java b/core/java/android/webkit/WebViewClassic.java
index 65fd59a..d1da53b 100644
--- a/core/java/android/webkit/WebViewClassic.java
+++ b/core/java/android/webkit/WebViewClassic.java
@@ -7827,15 +7827,18 @@ public final class WebViewClassic implements WebViewProvider, WebViewProvider.Sc
mSendScrollEvent = true;
int functor = 0;
+ boolean forceInval = isPictureAfterFirstLayout;
ViewRootImpl viewRoot = mWebView.getViewRootImpl();
if (mWebView.isHardwareAccelerated() && viewRoot != null) {
functor = nativeGetDrawGLFunction(mNativeClass);
if (functor != 0) {
- viewRoot.attachFunctor(functor);
+ // force an invalidate if functor attach not successful
+ forceInval |= !viewRoot.attachFunctor(functor);
}
}
if (functor == 0
+ || forceInval
|| mWebView.getLayerType() != View.LAYER_TYPE_NONE) {
// invalidate the screen so that the next repaint will show new content
// TODO: partial invalidate