Chromium Code Reviews| Index: content/browser/renderer_host/begin_frame_observer_proxy.cc |
| diff --git a/content/browser/renderer_host/begin_frame_observer_proxy.cc b/content/browser/renderer_host/begin_frame_observer_proxy.cc |
| index 7a6651f53c3a9faf6d55e981e1838d333563dd5a..06baa18bd2a128390dd6436cf581077043c0f5fc 100644 |
| --- a/content/browser/renderer_host/begin_frame_observer_proxy.cc |
| +++ b/content/browser/renderer_host/begin_frame_observer_proxy.cc |
| @@ -14,6 +14,7 @@ BeginFrameObserverProxy::BeginFrameObserverProxy( |
| } |
| BeginFrameObserverProxy::~BeginFrameObserverProxy() { |
| + DCHECK(!compositor_); |
| } |
| void BeginFrameObserverProxy::SetNeedsBeginFrames(bool needs_begin_frames) { |
| @@ -38,6 +39,7 @@ void BeginFrameObserverProxy::SetCompositor(ui::Compositor* compositor) { |
| DCHECK(compositor); |
| compositor_ = compositor; |
| + compositor_->AddObserver(this); |
| if (needs_begin_frames_) |
| StartObservingBeginFrames(); |
| } |
| @@ -45,6 +47,7 @@ void BeginFrameObserverProxy::SetCompositor(ui::Compositor* compositor) { |
| void BeginFrameObserverProxy::ResetCompositor() { |
| if (!compositor_) |
| return; |
| + compositor_->RemoveObserver(this); |
|
danakj
2015/03/27 16:25:24
You need to remove observer on destruction yes? Sh
simonhong
2015/03/27 17:37:54
Right, we need to call ResetCompositor() in dtor.
|
| if (needs_begin_frames_) |
| StopObservingBeginFrames(); |
| @@ -57,6 +60,11 @@ void BeginFrameObserverProxy::OnSendBeginFrame(const cc::BeginFrameArgs& args) { |
| last_sent_begin_frame_args_ = args; |
| } |
| +void BeginFrameObserverProxy::OnCompositingShuttingDown( |
| + ui::Compositor* compositor) { |
| + ResetCompositor(); |
| +} |
| + |
| void BeginFrameObserverProxy::StartObservingBeginFrames() { |
| DCHECK(compositor_); |
| compositor_->AddBeginFrameObserver(this); |