| Index: cc/trees/proxy_main.cc
|
| diff --git a/cc/trees/proxy_main.cc b/cc/trees/proxy_main.cc
|
| index de79051d4b38e3395e219f1054e431150859bd37..783e8bad891d316c9bbd728dab9b0b2d915b2506 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),
|
| + compositor_frame_sink_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());
|
| + compositor_frame_sink_weak_factory_.InvalidateWeakPtrs();
|
| layer_tree_host_->DidLoseCompositorFrameSink();
|
| }
|
|
|
| @@ -289,7 +291,8 @@ void ProxyMain::SetCompositorFrameSink(
|
| ImplThreadTaskRunner()->PostTask(
|
| FROM_HERE,
|
| base::Bind(&ProxyImpl::InitializeCompositorFrameSinkOnImpl,
|
| - base::Unretained(proxy_impl_.get()), compositor_frame_sink));
|
| + base::Unretained(proxy_impl_.get()), compositor_frame_sink,
|
| + compositor_frame_sink_weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| void ProxyMain::SetVisible(bool visible) {
|
| @@ -466,6 +469,7 @@ bool ProxyMain::MainFrameWillHappenForTesting() {
|
|
|
| void ProxyMain::ReleaseCompositorFrameSink() {
|
| DCHECK(IsMainThread());
|
| + compositor_frame_sink_weak_factory_.InvalidateWeakPtrs();
|
| DebugScopedSetMainThreadBlocked main_thread_blocked(task_runner_provider_);
|
| CompletionEvent completion;
|
| ImplThreadTaskRunner()->PostTask(
|
|
|