diff options
| author | Chris Craik <ccraik@google.com> | 2012-05-31 17:57:45 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-31 17:57:45 -0700 |
| commit | 53913ed55ce2b5f0d2137b2a7b67eaf7556c0c28 (patch) | |
| tree | 972a92dc00f15855749000a34b1e0abfb9972fa1 /core/java/android | |
| parent | f0e96de863a06bbee2aaf2aeb0f586e2a434aa62 (diff) | |
| parent | 41ee465734d0006797a8fd36e88976c1e85d161c (diff) | |
| download | frameworks_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.java | 10 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 5 | ||||
| -rw-r--r-- | core/java/android/webkit/WebViewClassic.java | 5 |
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 |
