| 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;
|
| }
|
|
|
|
|