| Index: cc/surfaces/display.cc
|
| diff --git a/cc/surfaces/display.cc b/cc/surfaces/display.cc
|
| index dd776fb1bc4d118408d8557c20a7b2eefc75389b..7cd9d6d126b566dd5547595523d92a181a2d466d 100644
|
| --- a/cc/surfaces/display.cc
|
| +++ b/cc/surfaces/display.cc
|
| @@ -131,8 +131,8 @@ void Display::InitializeRenderer() {
|
| // overlays.
|
| bool output_partial_list = renderer_->Capabilities().using_partial_swap &&
|
| !output_surface_->GetOverlayCandidateValidator();
|
| - aggregator_.reset(new SurfaceAggregator(manager_, resource_provider_.get(),
|
| - output_partial_list));
|
| + aggregator_.reset(new SurfaceAggregator(
|
| + this, manager_, resource_provider_.get(), output_partial_list));
|
| }
|
|
|
| void Display::DidLoseOutputSurface() {
|
| @@ -150,6 +150,31 @@ void Display::UpdateRootSurfaceResourcesLocked() {
|
| scheduler_->SetRootSurfaceResourcesLocked(root_surface_resources_locked);
|
| }
|
|
|
| +void Display::AddSurface(Surface* surface) {
|
| + // Checking for the output_surface ensures Display::Initialize has been
|
| + // called and that scheduler_ won't change its value.
|
| + DCHECK(output_surface_);
|
| +
|
| + // WebView's HardwareRenderer will never have a scheduler.
|
| + if (!scheduler_)
|
| + return;
|
| +
|
| + surface->AddBeginFrameSource(scheduler_->begin_frame_source_for_children());
|
| +}
|
| +
|
| +void Display::RemoveSurface(Surface* surface) {
|
| + // Checking for the output_surface ensures Display::Initialize has been
|
| + // called and that scheduler_ won't change its value.
|
| + DCHECK(output_surface_);
|
| +
|
| + // WebView's HardwareRenderer will never have a scheduler.
|
| + if (!scheduler_)
|
| + return;
|
| +
|
| + surface->RemoveBeginFrameSource(
|
| + scheduler_->begin_frame_source_for_children());
|
| +}
|
| +
|
| bool Display::DrawAndSwap() {
|
| TRACE_EVENT0("cc", "Display::DrawAndSwap");
|
|
|
|
|