| Index: android_webview/browser/browser_view_renderer.cc
|
| diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
|
| index ded772d6403d360843683889e81a98d981d9fc5d..a2432efb52c7e38be362f857d08c9810f4f9cc0d 100644
|
| --- a/android_webview/browser/browser_view_renderer.cc
|
| +++ b/android_webview/browser/browser_view_renderer.cc
|
| @@ -143,14 +143,28 @@ void BrowserViewRenderer::PrepareToDraw(const gfx::Vector2d& scroll,
|
| last_on_draw_global_visible_rect_ = global_visible_rect;
|
| }
|
|
|
| -bool BrowserViewRenderer::OnDrawHardware() {
|
| - TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDrawHardware");
|
| - shared_renderer_state_.InitializeHardwareDrawIfNeededOnUI();
|
| +bool BrowserViewRenderer::CanOnDraw() {
|
| if (!compositor_) {
|
| TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_NoCompositor",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| return false;
|
| }
|
| + if (clear_view_) {
|
| + TRACE_EVENT_INSTANT0("android_webview", "EarlyOut_ClearView",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + return false;
|
| + }
|
| +
|
| + return true;
|
| +}
|
| +
|
| +bool BrowserViewRenderer::OnDrawHardware() {
|
| + TRACE_EVENT0("android_webview", "BrowserViewRenderer::OnDrawHardware");
|
| + shared_renderer_state_.InitializeHardwareDrawIfNeededOnUI();
|
| +
|
| + if (!CanOnDraw()) {
|
| + return false;
|
| + }
|
|
|
| shared_renderer_state_.SetScrollOffsetOnUI(last_on_draw_scroll_offset_);
|
|
|
| @@ -270,13 +284,7 @@ void BrowserViewRenderer::InvalidateOnFunctorDestroy() {
|
| }
|
|
|
| bool BrowserViewRenderer::OnDrawSoftware(SkCanvas* canvas) {
|
| - if (!compositor_) {
|
| - TRACE_EVENT_INSTANT0(
|
| - "android_webview", "EarlyOut_NoCompositor", TRACE_EVENT_SCOPE_THREAD);
|
| - return false;
|
| - }
|
| -
|
| - return CompositeSW(canvas);
|
| + return CanOnDraw() && CompositeSW(canvas);
|
| }
|
|
|
| skia::RefPtr<SkPicture> BrowserViewRenderer::CapturePicture(int width,
|
|
|