Chromium Code Reviews| Index: ui/compositor/compositor.cc |
| diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc |
| index cab5d6eab3787386d62b9a60c15ced8ef41c4663..767595caa95982dfc377c9107a2c84888084cd6b 100644 |
| --- a/ui/compositor/compositor.cc |
| +++ b/ui/compositor/compositor.cc |
| @@ -190,8 +190,6 @@ Compositor::~Compositor() { |
| FOR_EACH_OBSERVER(CompositorAnimationObserver, animation_observer_list_, |
| OnCompositingShuttingDown(this)); |
| - DCHECK(begin_frame_observer_list_.empty()); |
| - |
| if (root_layer_) |
| root_layer_->ResetCompositor(); |
| @@ -355,27 +353,20 @@ bool Compositor::HasAnimationObserver( |
| } |
| void Compositor::AddBeginFrameObserver(CompositorBeginFrameObserver* observer) { |
| - DCHECK(std::find(begin_frame_observer_list_.begin(), |
| - begin_frame_observer_list_.end(), observer) == |
| - begin_frame_observer_list_.end()); |
| - |
| - if (begin_frame_observer_list_.empty()) |
| + if (!begin_frame_observer_list_.might_have_observers()) |
| host_->SetChildrenNeedBeginFrames(true); |
| + begin_frame_observer_list_.AddObserver(observer); |
| + |
| if (missed_begin_frame_args_.IsValid()) |
| observer->OnSendBeginFrame(missed_begin_frame_args_); |
| - |
| - begin_frame_observer_list_.push_back(observer); |
| } |
| void Compositor::RemoveBeginFrameObserver( |
| CompositorBeginFrameObserver* observer) { |
| - auto it = std::find(begin_frame_observer_list_.begin(), |
| - begin_frame_observer_list_.end(), observer); |
| - DCHECK(it != begin_frame_observer_list_.end()); |
| - begin_frame_observer_list_.erase(it); |
| + begin_frame_observer_list_.RemoveObserver(observer); |
| - if (begin_frame_observer_list_.empty()) { |
| + if (!begin_frame_observer_list_.might_have_observers()) { |
| host_->SetChildrenNeedBeginFrames(false); |
|
danakj
2015/10/21 20:23:51
What if might_have is true, but actually this was
jdduke (slow)
2015/10/21 20:48:12
Good call, we can check after iterating over the o
|
| missed_begin_frame_args_ = cc::BeginFrameArgs(); |
| } |
| @@ -448,8 +439,8 @@ void Compositor::DidAbortSwapBuffers() { |
| } |
| void Compositor::SendBeginFramesToChildren(const cc::BeginFrameArgs& args) { |
| - for (auto observer : begin_frame_observer_list_) |
| - observer->OnSendBeginFrame(args); |
| + FOR_EACH_OBSERVER(CompositorBeginFrameObserver, begin_frame_observer_list_, |
| + OnSendBeginFrame(args)); |
| missed_begin_frame_args_ = args; |
| missed_begin_frame_args_.type = cc::BeginFrameArgs::MISSED; |