Index: ui/compositor/compositor.cc |
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc |
index 6d1bdace3345cb8ae0d8bd054652013f694ae9cb..627616a231ce12555a1af16db3780fe98a647563 100644 |
--- a/ui/compositor/compositor.cc |
+++ b/ui/compositor/compositor.cc |
@@ -194,8 +194,6 @@ Compositor::~Compositor() { |
FOR_EACH_OBSERVER(CompositorAnimationObserver, animation_observer_list_, |
OnCompositingShuttingDown(this)); |
- DCHECK(begin_frame_observer_list_.empty()); |
- |
if (root_layer_) |
root_layer_->ResetCompositor(); |
@@ -359,27 +357,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); |
missed_begin_frame_args_ = cc::BeginFrameArgs(); |
} |
@@ -452,8 +443,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; |