Cherry-pick: aw: Invalidate view on hardware teardown
Clean cherry-pick of chromium
crrev.com/f06145bfa6fb8bb4bbff86d8bd38e6e7c4a5078e
BUG: 17415765
Original description:
This is a new requirement in L during functor teardown.
Review URL: https://codereview.chromium.org/561553002
Change-Id: Ic37699f5d73bb9451458a4301cbf6bd34880c537
Cr-Commit-Position: refs/heads/master@{#294201}
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java
index cd4b145..7e64190 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -2032,6 +2032,13 @@
}
}
+ // Call postInvalidateOnAnimation for invalidations. This is only used to synchronize
+ // draw functor destruction.
+ @CalledByNative
+ private void invalidateOnFunctorDestroy() {
+ mContainerView.invalidate();
+ }
+
@CalledByNative
private int[] getLocationOnScreen() {
int[] result = new int[2];
diff --git a/android_webview/native/aw_contents.cc b/android_webview/native/aw_contents.cc
index 97e6a8b..19ed04f 100644
--- a/android_webview/native/aw_contents.cc
+++ b/android_webview/native/aw_contents.cc
@@ -899,6 +899,11 @@
void AwContents::ReleaseHardwareDrawIfNeeded() {
InsideHardwareReleaseReset inside_reset(&shared_renderer_state_);
+ JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
+ if (!obj.is_null())
+ Java_AwContents_invalidateOnFunctorDestroy(env, obj.obj());
+
bool hardware_initialized = browser_view_renderer_.hardware_enabled();
if (hardware_initialized) {
bool draw_functor_succeeded = RequestDrawGL(NULL, true);