Chromium Code Reviews| Index: cc/trees/proxy_main.cc |
| diff --git a/cc/trees/proxy_main.cc b/cc/trees/proxy_main.cc |
| index c11036c3ff32bae611bc372f7bfaf85f502ede71..cbfe99562bec1344ae99d7fff09549a42c1d507f 100644 |
| --- a/cc/trees/proxy_main.cc |
| +++ b/cc/trees/proxy_main.cc |
| @@ -36,6 +36,7 @@ ProxyMain::ProxyMain(LayerTreeHost* layer_tree_host, |
| commit_waits_for_activation_(false), |
| started_(false), |
| defer_commits_(false), |
| + frame_sink_bound_weak_factory_(this), |
| weak_factory_(this) { |
| TRACE_EVENT0("cc", "ProxyMain::ProxyMain"); |
| DCHECK(task_runner_provider_); |
| @@ -88,6 +89,7 @@ void ProxyMain::SetAnimationEvents(std::unique_ptr<MutatorEvents> events) { |
| void ProxyMain::DidLoseCompositorFrameSink() { |
| TRACE_EVENT0("cc", "ProxyMain::DidLoseCompositorFrameSink"); |
| DCHECK(IsMainThread()); |
| + frame_sink_bound_weak_factory_.InvalidateWeakPtrs(); |
|
danakj
2017/04/18 20:58:42
I would either add a unit test for this case too o
Saman Sami
2017/04/18 21:37:13
Removed to keep things simple. If we ever need thi
|
| layer_tree_host_->DidLoseCompositorFrameSink(); |
| } |
| @@ -298,9 +300,10 @@ bool ProxyMain::CommitToActiveTree() const { |
| void ProxyMain::SetCompositorFrameSink( |
| CompositorFrameSink* compositor_frame_sink) { |
| ImplThreadTaskRunner()->PostTask( |
| - FROM_HERE, base::BindOnce(&ProxyImpl::InitializeCompositorFrameSinkOnImpl, |
| - base::Unretained(proxy_impl_.get()), |
| - compositor_frame_sink)); |
| + FROM_HERE, |
| + base::BindOnce(&ProxyImpl::InitializeCompositorFrameSinkOnImpl, |
| + base::Unretained(proxy_impl_.get()), compositor_frame_sink, |
| + frame_sink_bound_weak_factory_.GetWeakPtr())); |
| } |
| void ProxyMain::SetVisible(bool visible) { |
| @@ -479,6 +482,7 @@ bool ProxyMain::MainFrameWillHappenForTesting() { |
| void ProxyMain::ReleaseCompositorFrameSink() { |
| DCHECK(IsMainThread()); |
| + frame_sink_bound_weak_factory_.InvalidateWeakPtrs(); |
| DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_); |
| CompletionEvent completion; |
| ImplThreadTaskRunner()->PostTask( |