| Index: cc/scheduler/begin_frame_source.cc
|
| diff --git a/cc/scheduler/begin_frame_source.cc b/cc/scheduler/begin_frame_source.cc
|
| index 54470862b43f63d05d98e4cc0972ee9feb011522..99bc9c6aa06c51915efb02f8aeaf3af2a5361c1f 100644
|
| --- a/cc/scheduler/begin_frame_source.cc
|
| +++ b/cc/scheduler/begin_frame_source.cc
|
| @@ -270,195 +270,4 @@ void SyntheticBeginFrameSource::AsValueInto(
|
| dict->EndDictionary();
|
| }
|
|
|
| -// BeginFrameSourceMultiplexer -------------------------------------------
|
| -scoped_ptr<BeginFrameSourceMultiplexer> BeginFrameSourceMultiplexer::Create() {
|
| - return make_scoped_ptr(new BeginFrameSourceMultiplexer());
|
| -}
|
| -
|
| -BeginFrameSourceMultiplexer::BeginFrameSourceMultiplexer()
|
| - : BeginFrameSourceBase(),
|
| - active_source_(nullptr),
|
| - inside_add_observer_(false) {}
|
| -
|
| -BeginFrameSourceMultiplexer::BeginFrameSourceMultiplexer(
|
| - base::TimeDelta minimum_interval)
|
| - : BeginFrameSourceBase(),
|
| - active_source_(nullptr),
|
| - inside_add_observer_(false) {}
|
| -
|
| -BeginFrameSourceMultiplexer::~BeginFrameSourceMultiplexer() {
|
| - if (active_source_ && needs_begin_frames())
|
| - active_source_->RemoveObserver(this);
|
| -}
|
| -
|
| -void BeginFrameSourceMultiplexer::SetMinimumInterval(
|
| - base::TimeDelta new_minimum_interval) {
|
| - DEBUG_FRAMES("BeginFrameSourceMultiplexer::SetMinimumInterval",
|
| - "current minimum (us)",
|
| - minimum_interval_.InMicroseconds(),
|
| - "new minimum (us)",
|
| - new_minimum_interval.InMicroseconds());
|
| - DCHECK_GE(new_minimum_interval.ToInternalValue(), 0);
|
| - minimum_interval_ = new_minimum_interval;
|
| -}
|
| -
|
| -void BeginFrameSourceMultiplexer::AddSource(BeginFrameSource* new_source) {
|
| - DEBUG_FRAMES("BeginFrameSourceMultiplexer::AddSource", "current active",
|
| - active_source_, "source to be added", new_source);
|
| - DCHECK(new_source);
|
| - DCHECK(!HasSource(new_source));
|
| -
|
| - source_list_.insert(new_source);
|
| -
|
| - // If there is no active source, set the new one as the active one.
|
| - if (!active_source_)
|
| - SetActiveSource(new_source);
|
| -}
|
| -
|
| -void BeginFrameSourceMultiplexer::RemoveSource(
|
| - BeginFrameSource* existing_source) {
|
| - DEBUG_FRAMES("BeginFrameSourceMultiplexer::RemoveSource", "current active",
|
| - active_source_, "source to be removed", existing_source);
|
| - DCHECK(existing_source);
|
| - DCHECK(HasSource(existing_source));
|
| - DCHECK_NE(existing_source, active_source_);
|
| - source_list_.erase(existing_source);
|
| -}
|
| -
|
| -void BeginFrameSourceMultiplexer::SetActiveSource(
|
| - BeginFrameSource* new_source) {
|
| - DEBUG_FRAMES("BeginFrameSourceMultiplexer::SetActiveSource",
|
| - "current active",
|
| - active_source_,
|
| - "to become active",
|
| - new_source);
|
| -
|
| - DCHECK(HasSource(new_source) || new_source == nullptr);
|
| -
|
| - if (active_source_ == new_source)
|
| - return;
|
| -
|
| - if (active_source_ && needs_begin_frames())
|
| - active_source_->RemoveObserver(this);
|
| -
|
| - active_source_ = new_source;
|
| -
|
| - if (active_source_ && needs_begin_frames())
|
| - active_source_->AddObserver(this);
|
| -}
|
| -
|
| -const BeginFrameSource* BeginFrameSourceMultiplexer::ActiveSource() {
|
| - return active_source_;
|
| -}
|
| -
|
| -// BeginFrameObserver support
|
| -void BeginFrameSourceMultiplexer::OnBeginFrame(const BeginFrameArgs& args) {
|
| - if (!IsIncreasing(args)) {
|
| - DEBUG_FRAMES("BeginFrameSourceMultiplexer::OnBeginFrame",
|
| - "action",
|
| - "discarding",
|
| - "new args",
|
| - args.AsValue());
|
| - return;
|
| - }
|
| - DEBUG_FRAMES("BeginFrameSourceMultiplexer::OnBeginFrame",
|
| - "action",
|
| - "using",
|
| - "new args",
|
| - args.AsValue());
|
| - last_begin_frame_args_ = args;
|
| - CallOnBeginFrame(args);
|
| -}
|
| -
|
| -const BeginFrameArgs& BeginFrameSourceMultiplexer::LastUsedBeginFrameArgs()
|
| - const {
|
| - return last_begin_frame_args_;
|
| -}
|
| -
|
| -void BeginFrameSourceMultiplexer::OnBeginFrameSourcePausedChanged(bool paused) {
|
| - if (paused_ == paused)
|
| - return;
|
| - paused_ = paused;
|
| - if (!inside_add_observer_) {
|
| - std::set<BeginFrameObserver*> observers(observers_);
|
| - for (auto& it : observers)
|
| - it->OnBeginFrameSourcePausedChanged(paused);
|
| - }
|
| -}
|
| -
|
| -// BeginFrameSource support
|
| -void BeginFrameSourceMultiplexer::DidFinishFrame(size_t remaining_frames) {
|
| - DEBUG_FRAMES("BeginFrameSourceMultiplexer::DidFinishFrame",
|
| - "active_source",
|
| - active_source_,
|
| - "remaining_frames",
|
| - remaining_frames);
|
| - if (active_source_)
|
| - active_source_->DidFinishFrame(remaining_frames);
|
| -}
|
| -
|
| -void BeginFrameSourceMultiplexer::AddObserver(BeginFrameObserver* obs) {
|
| - base::AutoReset<bool> reset(&inside_add_observer_, true);
|
| - BeginFrameSourceBase::AddObserver(obs);
|
| -}
|
| -
|
| -void BeginFrameSourceMultiplexer::OnNeedsBeginFramesChanged(
|
| - bool needs_begin_frames) {
|
| - if (!active_source_)
|
| - return;
|
| - if (needs_begin_frames) {
|
| - active_source_->AddObserver(this);
|
| - } else {
|
| - active_source_->RemoveObserver(this);
|
| - }
|
| -}
|
| -
|
| -// Tracing support
|
| -void BeginFrameSourceMultiplexer::AsValueInto(
|
| - base::trace_event::TracedValue* dict) const {
|
| - dict->SetString("type", "BeginFrameSourceMultiplexer");
|
| -
|
| - dict->SetInteger("minimum_interval_us", minimum_interval_.InMicroseconds());
|
| -
|
| - dict->BeginDictionary("last_begin_frame_args");
|
| - last_begin_frame_args_.AsValueInto(dict);
|
| - dict->EndDictionary();
|
| -
|
| - if (active_source_) {
|
| - dict->BeginDictionary("active_source");
|
| - active_source_->AsValueInto(dict);
|
| - dict->EndDictionary();
|
| - } else {
|
| - dict->SetString("active_source", "NULL");
|
| - }
|
| -
|
| - dict->BeginArray("sources");
|
| - for (std::set<BeginFrameSource*>::const_iterator it = source_list_.begin();
|
| - it != source_list_.end();
|
| - ++it) {
|
| - dict->BeginDictionary();
|
| - (*it)->AsValueInto(dict);
|
| - dict->EndDictionary();
|
| - }
|
| - dict->EndArray();
|
| -}
|
| -
|
| -// protected methods
|
| -bool BeginFrameSourceMultiplexer::HasSource(BeginFrameSource* source) {
|
| - return (source_list_.find(source) != source_list_.end());
|
| -}
|
| -
|
| -bool BeginFrameSourceMultiplexer::IsIncreasing(const BeginFrameArgs& args) {
|
| - DCHECK(args.IsValid());
|
| -
|
| - // If the last begin frame is invalid, then any new begin frame is valid.
|
| - if (!last_begin_frame_args_.IsValid())
|
| - return true;
|
| -
|
| - // Only allow new args have a *strictly bigger* frame_time value and statisfy
|
| - // minimum interval requirement.
|
| - return (args.frame_time >=
|
| - last_begin_frame_args_.frame_time + minimum_interval_);
|
| -}
|
| -
|
| } // namespace cc
|
|
|