| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MOJO_SERVICES_SURFACES_SURFACES_SCHEDULER_H_ |
| #define MOJO_SERVICES_SURFACES_SURFACES_SCHEDULER_H_ |
| |
| #include <set> |
| |
| #include "cc/scheduler/scheduler.h" |
| |
| namespace cc { |
| class Display; |
| } |
| |
| namespace surfaces { |
| |
| class SurfacesScheduler : public cc::SchedulerClient { |
| public: |
| SurfacesScheduler(); |
| ~SurfacesScheduler() override; |
| |
| void SetNeedsDraw(); |
| |
| void OnVSyncParametersUpdated(base::TimeTicks timebase, |
| base::TimeDelta interval); |
| |
| void AddDisplay(cc::Display* display); |
| void RemoveDisplay(cc::Display* display); |
| |
| private: |
| void WillBeginImplFrame(const cc::BeginFrameArgs& args) override; |
| void ScheduledActionSendBeginMainFrame() override; |
| cc::DrawResult ScheduledActionDrawAndSwapIfPossible() override; |
| cc::DrawResult ScheduledActionDrawAndSwapForced() override; |
| void ScheduledActionAnimate() override; |
| void ScheduledActionCommit() override; |
| void ScheduledActionActivateSyncTree() override; |
| void ScheduledActionBeginOutputSurfaceCreation() override; |
| void ScheduledActionPrepareTiles() override; |
| void DidAnticipatedDrawTimeChange(base::TimeTicks time) override; |
| base::TimeDelta DrawDurationEstimate() override; |
| base::TimeDelta BeginMainFrameToCommitDurationEstimate() override; |
| base::TimeDelta CommitToActivateDurationEstimate() override; |
| void DidBeginImplFrameDeadline() override; |
| void SendBeginFramesToChildren(const cc::BeginFrameArgs& args) override; |
| void SendBeginMainFrameNotExpectedSoon() override; |
| |
| std::set<cc::Display*> displays_; |
| scoped_ptr<cc::Scheduler> scheduler_; |
| base::TimeDelta draw_estimate_; |
| |
| DISALLOW_COPY_AND_ASSIGN(SurfacesScheduler); |
| }; |
| |
| } // namespace mojo |
| |
| #endif // MOJO_SERVICES_SURFACES_SURFACES_SCHEDULER_H_ |