Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 08c42f6bf674ad625e436eb078853b1702de2685..2498ba52a4dee3561da491f5c4d559e3abca769c 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -1502,6 +1502,8 @@ bool LayerTreeHostImpl::SwapBuffers(const LayerTreeHostImpl::FrameData& frame) { |
void LayerTreeHostImpl::SetNeedsBeginFrame(bool enable) { |
if (output_surface_) |
output_surface_->SetNeedsBeginFrame(enable); |
+ else |
+ DCHECK(!enable); |
} |
void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) { |
@@ -1885,20 +1887,18 @@ bool LayerTreeHostImpl::InitializeRenderer( |
GetRendererCapabilities().allow_rasterize_on_demand); |
} |
- if (!settings_.throttle_frame_production) { |
- // Disable VSync |
- output_surface->SetThrottleFrameProduction(false); |
- } else if (!settings_.begin_impl_frame_scheduling_enabled) { |
- // Setup BeginFrameEmulation if it's not supported natively |
- const base::TimeDelta display_refresh_interval = |
- base::TimeDelta::FromMicroseconds( |
- base::Time::kMicrosecondsPerSecond / |
- settings_.refresh_rate); |
+ // Initialize vsync parameters to sane values. |
+ const base::TimeDelta display_refresh_interval = |
+ base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / |
+ settings_.refresh_rate); |
+ CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); |
- output_surface->InitializeBeginFrameEmulation( |
- proxy_->ImplThreadTaskRunner(), |
- display_refresh_interval); |
- } |
+ // TODO(brianderson): Don't use a hard-coded parent draw time. |
+ base::TimeDelta parent_draw_time = |
+ output_surface->capabilities().adjust_deadline_for_parent |
+ ? BeginFrameArgs::DefaultDeadlineAdjustment() |
+ : base::TimeDelta(); |
+ client_->SetEstimatedParentDrawTime(parent_draw_time); |
int max_frames_pending = |
output_surface->capabilities().max_frames_pending; |
@@ -1914,6 +1914,11 @@ bool LayerTreeHostImpl::InitializeRenderer( |
return true; |
} |
+void LayerTreeHostImpl::CommitVSyncParameters(base::TimeTicks timebase, |
+ base::TimeDelta interval) { |
+ client_->CommitVSyncParameters(timebase, interval); |
+} |
+ |
bool LayerTreeHostImpl::DeferredInitialize( |
scoped_refptr<ContextProvider> offscreen_context_provider) { |
DCHECK(output_surface_->capabilities().deferred_gl_initialization); |