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 "cc/scheduler/begin_frame_source.h" | 5 #include "cc/scheduler/begin_frame_source.h" |
6 | 6 |
7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
8 #include "base/location.h" | 8 #include "base/location.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 DCHECK(args.frame_time >= last_begin_frame_args_.frame_time); | 46 DCHECK(args.frame_time >= last_begin_frame_args_.frame_time); |
47 bool used = OnBeginFrameMixInDelegate(args); | 47 bool used = OnBeginFrameMixInDelegate(args); |
48 if (used) { | 48 if (used) { |
49 last_begin_frame_args_ = args; | 49 last_begin_frame_args_ = args; |
50 } else { | 50 } else { |
51 ++dropped_begin_frame_args_; | 51 ++dropped_begin_frame_args_; |
52 } | 52 } |
53 } | 53 } |
54 | 54 |
55 void BeginFrameObserverMixIn::AsValueInto( | 55 void BeginFrameObserverMixIn::AsValueInto( |
56 base::debug::TracedValue* dict) const { | 56 base::trace_event::TracedValue* dict) const { |
57 dict->BeginDictionary("last_begin_frame_args_"); | 57 dict->BeginDictionary("last_begin_frame_args_"); |
58 last_begin_frame_args_.AsValueInto(dict); | 58 last_begin_frame_args_.AsValueInto(dict); |
59 dict->EndDictionary(); | 59 dict->EndDictionary(); |
60 dict->SetInteger("dropped_begin_frame_args_", dropped_begin_frame_args_); | 60 dict->SetInteger("dropped_begin_frame_args_", dropped_begin_frame_args_); |
61 } | 61 } |
62 | 62 |
63 // BeginFrameSourceMixIn ------------------------------------------------------ | 63 // BeginFrameSourceMixIn ------------------------------------------------------ |
64 BeginFrameSourceMixIn::BeginFrameSourceMixIn() | 64 BeginFrameSourceMixIn::BeginFrameSourceMixIn() |
65 : observer_(NULL), | 65 : observer_(NULL), |
66 needs_begin_frames_(false), | 66 needs_begin_frames_(false), |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 "current observer", | 110 "current observer", |
111 observer_, | 111 observer_, |
112 "args", | 112 "args", |
113 args.AsValue()); | 113 args.AsValue()); |
114 if (observer_) { | 114 if (observer_) { |
115 return observer_->OnBeginFrame(args); | 115 return observer_->OnBeginFrame(args); |
116 } | 116 } |
117 } | 117 } |
118 | 118 |
119 // Tracing support | 119 // Tracing support |
120 void BeginFrameSourceMixIn::AsValueInto(base::debug::TracedValue* dict) const { | 120 void BeginFrameSourceMixIn::AsValueInto( |
| 121 base::trace_event::TracedValue* dict) const { |
121 // As the observer might try to trace the source, prevent an infinte loop | 122 // As the observer might try to trace the source, prevent an infinte loop |
122 // from occuring. | 123 // from occuring. |
123 if (inside_as_value_into_) { | 124 if (inside_as_value_into_) { |
124 dict->SetString("observer", "<loop detected>"); | 125 dict->SetString("observer", "<loop detected>"); |
125 return; | 126 return; |
126 } | 127 } |
127 | 128 |
128 if (observer_) { | 129 if (observer_) { |
129 base::AutoReset<bool> prevent_loops( | 130 base::AutoReset<bool> prevent_loops( |
130 const_cast<bool*>(&inside_as_value_into_), true); | 131 const_cast<bool*>(&inside_as_value_into_), true); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 // BeginFrameSource support | 192 // BeginFrameSource support |
192 | 193 |
193 void BackToBackBeginFrameSource::DidFinishFrame(size_t remaining_frames) { | 194 void BackToBackBeginFrameSource::DidFinishFrame(size_t remaining_frames) { |
194 if (remaining_frames == 0) { | 195 if (remaining_frames == 0) { |
195 OnNeedsBeginFramesChange(NeedsBeginFrames()); | 196 OnNeedsBeginFramesChange(NeedsBeginFrames()); |
196 } | 197 } |
197 } | 198 } |
198 | 199 |
199 // Tracing support | 200 // Tracing support |
200 void BackToBackBeginFrameSource::AsValueInto( | 201 void BackToBackBeginFrameSource::AsValueInto( |
201 base::debug::TracedValue* dict) const { | 202 base::trace_event::TracedValue* dict) const { |
202 dict->SetString("type", "BackToBackBeginFrameSource"); | 203 dict->SetString("type", "BackToBackBeginFrameSource"); |
203 BeginFrameSourceMixIn::AsValueInto(dict); | 204 BeginFrameSourceMixIn::AsValueInto(dict); |
204 dict->SetBoolean("send_begin_frame_posted_", send_begin_frame_posted_); | 205 dict->SetBoolean("send_begin_frame_posted_", send_begin_frame_posted_); |
205 } | 206 } |
206 | 207 |
207 // SyntheticBeginFrameSource --------------------------------------------- | 208 // SyntheticBeginFrameSource --------------------------------------------- |
208 scoped_ptr<SyntheticBeginFrameSource> SyntheticBeginFrameSource::Create( | 209 scoped_ptr<SyntheticBeginFrameSource> SyntheticBeginFrameSource::Create( |
209 base::SingleThreadTaskRunner* task_runner, | 210 base::SingleThreadTaskRunner* task_runner, |
210 base::TimeTicks initial_vsync_timebase, | 211 base::TimeTicks initial_vsync_timebase, |
211 base::TimeDelta initial_vsync_interval) { | 212 base::TimeDelta initial_vsync_interval) { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 CreateBeginFrameArgs(missed_tick_time, BeginFrameArgs::MISSED)); | 264 CreateBeginFrameArgs(missed_tick_time, BeginFrameArgs::MISSED)); |
264 } | 265 } |
265 } | 266 } |
266 | 267 |
267 bool SyntheticBeginFrameSource::NeedsBeginFrames() const { | 268 bool SyntheticBeginFrameSource::NeedsBeginFrames() const { |
268 return time_source_->Active(); | 269 return time_source_->Active(); |
269 } | 270 } |
270 | 271 |
271 // Tracing support | 272 // Tracing support |
272 void SyntheticBeginFrameSource::AsValueInto( | 273 void SyntheticBeginFrameSource::AsValueInto( |
273 base::debug::TracedValue* dict) const { | 274 base::trace_event::TracedValue* dict) const { |
274 dict->SetString("type", "SyntheticBeginFrameSource"); | 275 dict->SetString("type", "SyntheticBeginFrameSource"); |
275 BeginFrameSourceMixIn::AsValueInto(dict); | 276 BeginFrameSourceMixIn::AsValueInto(dict); |
276 | 277 |
277 dict->BeginDictionary("time_source"); | 278 dict->BeginDictionary("time_source"); |
278 time_source_->AsValueInto(dict); | 279 time_source_->AsValueInto(dict); |
279 dict->EndDictionary(); | 280 dict->EndDictionary(); |
280 } | 281 } |
281 | 282 |
282 // BeginFrameSourceMultiplexer ------------------------------------------- | 283 // BeginFrameSourceMultiplexer ------------------------------------------- |
283 scoped_ptr<BeginFrameSourceMultiplexer> BeginFrameSourceMultiplexer::Create() { | 284 scoped_ptr<BeginFrameSourceMultiplexer> BeginFrameSourceMultiplexer::Create() { |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 active_source_, | 433 active_source_, |
433 "remaining_frames", | 434 "remaining_frames", |
434 remaining_frames); | 435 remaining_frames); |
435 if (active_source_) { | 436 if (active_source_) { |
436 active_source_->DidFinishFrame(remaining_frames); | 437 active_source_->DidFinishFrame(remaining_frames); |
437 } | 438 } |
438 } | 439 } |
439 | 440 |
440 // Tracing support | 441 // Tracing support |
441 void BeginFrameSourceMultiplexer::AsValueInto( | 442 void BeginFrameSourceMultiplexer::AsValueInto( |
442 base::debug::TracedValue* dict) const { | 443 base::trace_event::TracedValue* dict) const { |
443 dict->SetString("type", "BeginFrameSourceMultiplexer"); | 444 dict->SetString("type", "BeginFrameSourceMultiplexer"); |
444 | 445 |
445 dict->SetInteger("minimum_interval_us", minimum_interval_.InMicroseconds()); | 446 dict->SetInteger("minimum_interval_us", minimum_interval_.InMicroseconds()); |
446 if (observer_) { | 447 if (observer_) { |
447 dict->BeginDictionary("last_begin_frame_args"); | 448 dict->BeginDictionary("last_begin_frame_args"); |
448 observer_->LastUsedBeginFrameArgs().AsValueInto(dict); | 449 observer_->LastUsedBeginFrameArgs().AsValueInto(dict); |
449 dict->EndDictionary(); | 450 dict->EndDictionary(); |
450 } | 451 } |
451 | 452 |
452 if (active_source_) { | 453 if (active_source_) { |
(...skipping 29 matching lines...) Expand all Loading... |
482 if (!observer_->LastUsedBeginFrameArgs().IsValid()) | 483 if (!observer_->LastUsedBeginFrameArgs().IsValid()) |
483 return true; | 484 return true; |
484 | 485 |
485 // Only allow new args have a *strictly bigger* frame_time value and statisfy | 486 // Only allow new args have a *strictly bigger* frame_time value and statisfy |
486 // minimum interval requirement. | 487 // minimum interval requirement. |
487 return (args.frame_time >= | 488 return (args.frame_time >= |
488 observer_->LastUsedBeginFrameArgs().frame_time + minimum_interval_); | 489 observer_->LastUsedBeginFrameArgs().frame_time + minimum_interval_); |
489 } | 490 } |
490 | 491 |
491 } // namespace cc | 492 } // namespace cc |
OLD | NEW |