Index: android_webview/browser/hardware_renderer.cc |
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc |
index 4ed2859b1399038a5dd060058b0bfcd450158404..12c474cb2c17d7afae9e30534b6a7a2be3d59865 100644 |
--- a/android_webview/browser/hardware_renderer.cc |
+++ b/android_webview/browser/hardware_renderer.cc |
@@ -188,10 +188,10 @@ void HardwareRenderer::DrawGL(bool stencil_enabled, |
viewport_.SetSize(draw_info->width, draw_info->height); |
layer_tree_host_->SetViewportSize(viewport_); |
- clip_.SetRect(draw_info->clip_left, |
- draw_info->clip_top, |
- draw_info->clip_right - draw_info->clip_left, |
- draw_info->clip_bottom - draw_info->clip_top); |
+ gfx::Rect clip(draw_info->clip_left, |
+ draw_info->clip_top, |
+ draw_info->clip_right - draw_info->clip_left, |
+ draw_info->clip_bottom - draw_info->clip_top); |
stencil_enabled_ = stencil_enabled; |
gfx::Transform transform(gfx::Transform::kSkipInitialization); |
@@ -203,10 +203,20 @@ void HardwareRenderer::DrawGL(bool stencil_enabled, |
{ |
base::AutoReset<bool> frame_resetter(&viewport_clip_valid_for_dcheck_, |
true); |
- layer_tree_host_->SetNeedsRedrawRect(clip_); |
+ layer_tree_host_->SetNeedsRedrawRect(clip); |
layer_tree_host_->Composite(gfx::FrameTime::Now()); |
} |
gl_surface_->ResetBackingFrameBufferObject(); |
+ |
+ // Need to post the new transform matrix and clip back to child compositor |
+ // because there is no onDraw during a Render Thread animation, and child |
+ // compositor might not have the tiles rasterized as the animation goes on. |
+ if (transform != transform_ || clip != clip_) { |
+ transform_ = transform; |
+ clip_ = clip; |
boliu
2014/07/16 17:25:10
child shouldn't need the clip, clip isn't suitable
hush (inactive)
2014/07/16 20:45:32
okay.
I also change the function name to PostExter
|
+ shared_renderer_state_->PostExternalDrawConstraintsToChildCompositor( |
+ clip_, transform_); |
+ } |
} |
scoped_ptr<cc::OutputSurface> HardwareRenderer::CreateOutputSurface( |