Cherry-pick: aw: Ensure fallback tick unsets |block_invalidates_|
Clean cherry-pick of chromium
crrev.com/d3ba7205b5a0c9154b91357c8795e772833fa798
BUG: 17111986
Original description:
Currently, if |compositor_needs_continuous_invalidate_| is unset before
PostFallbackTick or FallbackTickFired, then the fallback ticks are
cancelled, but we never unset |block_invalidates_|, which will block
invalidates indefinitely.
Fix is simply always unset |block_invalidates_| even if we skip
the fallback tick.
Change-Id: I8bf65ae614a5ac697d5bc1b62c7cd11fbbd16cad
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
index f08a564..a736218 100644
--- a/android_webview/browser/browser_view_renderer.cc
+++ b/android_webview/browser/browser_view_renderer.cc
@@ -711,6 +711,9 @@
FROM_HERE,
fallback_tick_fired_.callback(),
base::TimeDelta::FromMilliseconds(kFallbackTickTimeoutInMilliseconds));
+ } else {
+ // Pretend we just composited to unblock further invalidates.
+ DidComposite();
}
}
@@ -723,8 +726,12 @@
// This should only be called if OnDraw or DrawGL did not come in time, which
// means block_invalidates_ must still be true.
DCHECK(block_invalidates_);
- if (compositor_needs_continuous_invalidate_ && compositor_)
+ if (compositor_needs_continuous_invalidate_ && compositor_) {
ForceFakeCompositeSW();
+ } else {
+ // Pretend we just composited to unblock further invalidates.
+ DidComposite();
+ }
}
void BrowserViewRenderer::ForceFakeCompositeSW() {