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, |