Index: content/browser/android/in_process/synchronous_compositor_output_surface.cc |
diff --git a/content/browser/android/in_process/synchronous_compositor_output_surface.cc b/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
index 682c530dc3938d61d0557ddb5e439a1998102c00..59556ad894a191dd0bef8f95399947fe3892a0fd 100644 |
--- a/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
+++ b/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
@@ -200,9 +200,15 @@ SynchronousCompositorOutputSurface::DemandDrawSw(SkCanvas* canvas) { |
surface_size_ = gfx::Size(canvas->getDeviceSize().width(), |
canvas->getDeviceSize().height()); |
- // Resourceless software draw does not need viewport_for_tiling. |
- gfx::Rect empty; |
- InvokeComposite(transform, clip, clip, empty, gfx::Transform(), false); |
+ // Pass in the cached hw viewport and transform for tile priority to avoid |
+ // tile thrashing when the WebView is alternating between hardware and |
+ // software draws. |
+ InvokeComposite(transform, |
+ clip, |
+ clip, |
+ cached_hw_viewport_rect_for_tile_priority_, |
+ cached_hw_transform_for_tile_priority_, |
+ false); |
return frame_holder_.Pass(); |
} |