OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "services/surfaces/surfaces_scheduler.h" | 5 #include "services/surfaces/surfaces_scheduler.h" |
6 | 6 |
7 namespace surfaces { | 7 namespace surfaces { |
8 | 8 |
9 SurfacesScheduler::Client::~Client() { | 9 SurfacesScheduler::Client::~Client() { |
10 } | 10 } |
11 | 11 |
12 SurfacesScheduler::SurfacesScheduler(Client* client) : client_(client) { | 12 SurfacesScheduler::SurfacesScheduler(Client* client) : client_(client) { |
13 cc::SchedulerSettings settings; | 13 cc::SchedulerSettings settings; |
14 scheduler_ = cc::Scheduler::Create( | 14 scheduler_ = cc::Scheduler::Create( |
15 this, settings, 0, base::MessageLoop::current()->task_runner(), nullptr, | 15 this, settings, 0, base::MessageLoop::current()->task_runner(), nullptr, |
16 nullptr); | 16 nullptr); |
17 scheduler_->SetCanStart(); | 17 scheduler_->SetCanStart(); |
18 scheduler_->SetVisible(true); | 18 scheduler_->SetVisible(true); |
19 scheduler_->SetCanDraw(true); | 19 scheduler_->SetCanDraw(true); |
| 20 scheduler_->SetNeedsCommit(); |
20 } | 21 } |
21 | 22 |
22 SurfacesScheduler::~SurfacesScheduler() { | 23 SurfacesScheduler::~SurfacesScheduler() { |
23 } | 24 } |
24 | 25 |
25 void SurfacesScheduler::SetNeedsDraw() { | 26 void SurfacesScheduler::SetNeedsDraw() { |
26 scheduler_->SetNeedsRedraw(); | 27 scheduler_->SetNeedsRedraw(); |
27 } | 28 } |
28 | 29 |
29 void SurfacesScheduler::OnVSyncParametersUpdated(base::TimeTicks timebase, | 30 void SurfacesScheduler::OnVSyncParametersUpdated(base::TimeTicks timebase, |
30 base::TimeDelta interval) { | 31 base::TimeDelta interval) { |
31 scheduler_->CommitVSyncParameters(timebase, interval); | 32 scheduler_->CommitVSyncParameters(timebase, interval); |
32 } | 33 } |
33 | 34 |
34 void SurfacesScheduler::WillBeginImplFrame(const cc::BeginFrameArgs& args) { | 35 void SurfacesScheduler::WillBeginImplFrame(const cc::BeginFrameArgs& args) { |
35 } | 36 } |
36 | 37 |
37 void SurfacesScheduler::ScheduledActionSendBeginMainFrame() { | 38 void SurfacesScheduler::ScheduledActionSendBeginMainFrame() { |
| 39 scheduler_->NotifyBeginMainFrameStarted(); |
| 40 scheduler_->NotifyReadyToCommit(); |
38 } | 41 } |
39 | 42 |
40 cc::DrawResult SurfacesScheduler::ScheduledActionDrawAndSwapIfPossible() { | 43 cc::DrawResult SurfacesScheduler::ScheduledActionDrawAndSwapIfPossible() { |
41 base::TimeTicks start = base::TimeTicks::Now(); | 44 base::TimeTicks start = base::TimeTicks::Now(); |
42 client_->Draw(); | 45 client_->Draw(); |
43 base::TimeDelta duration = base::TimeTicks::Now() - start; | 46 base::TimeDelta duration = base::TimeTicks::Now() - start; |
44 | 47 |
45 draw_estimate_ = (duration + draw_estimate_) / 2; | 48 draw_estimate_ = (duration + draw_estimate_) / 2; |
46 return cc::DRAW_SUCCESS; | 49 return cc::DRAW_SUCCESS; |
47 } | 50 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 } | 86 } |
84 | 87 |
85 void SurfacesScheduler::DidBeginImplFrameDeadline() { | 88 void SurfacesScheduler::DidBeginImplFrameDeadline() { |
86 } | 89 } |
87 | 90 |
88 void SurfacesScheduler::SendBeginFramesToChildren( | 91 void SurfacesScheduler::SendBeginFramesToChildren( |
89 const cc::BeginFrameArgs& args) { | 92 const cc::BeginFrameArgs& args) { |
90 } | 93 } |
91 | 94 |
92 } // namespace mojo | 95 } // namespace mojo |
OLD | NEW |