summaryrefslogtreecommitdiffstats
path: root/android_webview/browser/shared_renderer_state.h
diff options
context:
space:
mode:
authorhush <hush@chromium.org>2014-09-24 17:20:01 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-25 00:20:14 +0000
commit673cf0160d7b5e520841a65f4425f8be1a48fbb1 (patch)
treeecfdcfd2d93cff24dbaa33fb93620e75183f2da8 /android_webview/browser/shared_renderer_state.h
parenta4ef3a9c60553b3bcc8708587ea7832fc7cac29e (diff)
downloadchromium_src-673cf0160d7b5e520841a65f4425f8be1a48fbb1.zip
chromium_src-673cf0160d7b5e520841a65f4425f8be1a48fbb1.tar.gz
chromium_src-673cf0160d7b5e520841a65f4425f8be1a48fbb1.tar.bz2
Android WebView: fix missing an invalidate
When webview translates into the screen from offscreen by calling WebView#SetTranslateX/Y, onDrawHardware is called with an empty global visible rect. When the webview is still offscreen, Android frameworks won't call DrawGL on WebView, which means the "parent draw constraints" stored in hardware renderer won't contain the draw constraints when the webview is offscreen. When webview gets an ondraw with an empty global visible rect, we need to make sure the parent draw constraints of the corresponding DrawGL is always posted back to child compositor and triggers an invalidate. BUG=417479 Review URL: https://codereview.chromium.org/603633003 Cr-Commit-Position: refs/heads/master@{#296589}
Diffstat (limited to 'android_webview/browser/shared_renderer_state.h')
-rw-r--r--android_webview/browser/shared_renderer_state.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/android_webview/browser/shared_renderer_state.h b/android_webview/browser/shared_renderer_state.h
index 7e79332a..2074049 100644
--- a/android_webview/browser/shared_renderer_state.h
+++ b/android_webview/browser/shared_renderer_state.h
@@ -58,13 +58,18 @@ class SharedRendererState {
scoped_ptr<DrawGLInput> PassDrawGLInput();
bool IsInsideHardwareRelease() const;
- void UpdateDrawConstraints(
+ // Returns true if the draw constraints are updated.
+ bool UpdateDrawConstraints(
const ParentCompositorDrawConstraints& parent_draw_constraints);
void PostExternalDrawConstraintsToChildCompositor(
const ParentCompositorDrawConstraints& parent_draw_constraints);
const ParentCompositorDrawConstraints ParentDrawConstraints() const;
+ void SetForceInvalidateOnNextDrawGL(
+ bool needs_force_invalidate_on_next_draw_gl);
+ bool NeedsForceInvalidateOnNextDrawGL() const;
+
void InsertReturnedResources(const cc::ReturnedResourceArray& resources);
void SwapReturnedResources(cc::ReturnedResourceArray* resources);
bool ReturnedResourcesEmpty() const;
@@ -87,6 +92,7 @@ class SharedRendererState {
mutable base::Lock lock_;
scoped_ptr<DrawGLInput> draw_gl_input_;
bool inside_hardware_release_;
+ bool needs_force_invalidate_on_next_draw_gl_;
ParentCompositorDrawConstraints parent_draw_constraints_;
cc::ReturnedResourceArray returned_resources_;
base::Closure request_draw_gl_closure_;