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 1f0d849e1e5b60719b9b133bb0cca61acf518678..6ad260c5073cf0036c7e4fe4ebf0e7efa6d54c00 100644 |
--- a/android_webview/browser/browser_view_renderer.cc |
+++ b/android_webview/browser/browser_view_renderer.cc |
@@ -109,7 +109,8 @@ BrowserViewRenderer::BrowserViewRenderer( |
max_page_scale_factor_(0.f), |
on_new_picture_enable_(false), |
clear_view_(false), |
- offscreen_pre_raster_(false) {} |
+ offscreen_pre_raster_(false), |
+ first_sync_frame_(false) {} |
BrowserViewRenderer::~BrowserViewRenderer() { |
DCHECK(compositor_map_.empty()); |
@@ -232,14 +233,17 @@ bool BrowserViewRenderer::OnDrawHardware() { |
gfx::Rect viewport_rect_for_tile_priority = |
ComputeViewportRectForTilePriority(); |
- if (async_on_draw_hardware_) { |
- compositor_->DemandDrawHwAsync(size_, viewport_rect_for_tile_priority, |
- transform_for_tile_priority); |
+ if (async_on_draw_hardware_ && first_sync_frame_) { |
+ OnDrawHardwareProcessFrameFuture(compositor_->DemandDrawHwAsync( |
+ size_, viewport_rect_for_tile_priority, transform_for_tile_priority)); |
return current_compositor_frame_consumer_->HasFrameOnUI(); |
} |
+ first_sync_frame_ = true; |
+ |
content::SynchronousCompositor::Frame frame = compositor_->DemandDrawHw( |
size_, viewport_rect_for_tile_priority, transform_for_tile_priority); |
+ |
if (!frame.frame) { |
TRACE_EVENT_INSTANT0("android_webview", "NoNewFrame", |
TRACE_EVENT_SCOPE_THREAD); |
@@ -255,7 +259,6 @@ bool BrowserViewRenderer::OnDrawHardware() { |
current_compositor_frame_consumer_->PassUncommittedFrameOnUI()); |
current_compositor_frame_consumer_->SetFrameOnUI(std::move(child_frame), |
nullptr); |
- |
return true; |
} |