| Index: services/surfaces/surfaces_scheduler.cc
|
| diff --git a/services/surfaces/surfaces_scheduler.cc b/services/surfaces/surfaces_scheduler.cc
|
| index 0d042949feed5b0e6a40aaa1beeacc4c5ade2c7a..63942dbcee9e37b812dc07c887a5f3573568091d 100644
|
| --- a/services/surfaces/surfaces_scheduler.cc
|
| +++ b/services/surfaces/surfaces_scheduler.cc
|
| @@ -4,12 +4,11 @@
|
|
|
| #include "services/surfaces/surfaces_scheduler.h"
|
|
|
| -namespace surfaces {
|
| +#include "cc/surfaces/display.h"
|
|
|
| -SurfacesScheduler::Client::~Client() {
|
| -}
|
| +namespace surfaces {
|
|
|
| -SurfacesScheduler::SurfacesScheduler(Client* client) : client_(client) {
|
| +SurfacesScheduler::SurfacesScheduler() {
|
| cc::SchedulerSettings settings;
|
| scheduler_ = cc::Scheduler::Create(
|
| this, settings, 0, base::MessageLoop::current()->task_runner(), nullptr,
|
| @@ -32,6 +31,17 @@ void SurfacesScheduler::OnVSyncParametersUpdated(base::TimeTicks timebase,
|
| scheduler_->CommitVSyncParameters(timebase, interval);
|
| }
|
|
|
| +void SurfacesScheduler::AddDisplay(cc::Display* display) {
|
| + DCHECK(displays_.find(display) == displays_.end());
|
| + displays_.insert(display);
|
| +}
|
| +
|
| +void SurfacesScheduler::RemoveDisplay(cc::Display* display) {
|
| + auto it = displays_.find(display);
|
| + DCHECK(it != displays_.end());
|
| + displays_.erase(it);
|
| +}
|
| +
|
| void SurfacesScheduler::WillBeginImplFrame(const cc::BeginFrameArgs& args) {
|
| }
|
|
|
| @@ -42,7 +52,9 @@ void SurfacesScheduler::ScheduledActionSendBeginMainFrame() {
|
|
|
| cc::DrawResult SurfacesScheduler::ScheduledActionDrawAndSwapIfPossible() {
|
| base::TimeTicks start = base::TimeTicks::Now();
|
| - client_->Draw();
|
| + for (const auto& it : displays_) {
|
| + it->Draw();
|
| + }
|
| base::TimeDelta duration = base::TimeTicks::Now() - start;
|
|
|
| draw_estimate_ = (duration + draw_estimate_) / 2;
|
|
|