Index: components/viz/frame_sinks/mojo_frame_sink_manager.cc |
diff --git a/components/viz/frame_sinks/mojo_frame_sink_manager.cc b/components/viz/frame_sinks/mojo_frame_sink_manager.cc |
index 3e7f681a5b115e20f1d6b714e764b66ba4fbafc5..1c4cc82bc5109544b7cb4858f7b7d9616594da53 100644 |
--- a/components/viz/frame_sinks/mojo_frame_sink_manager.cc |
+++ b/components/viz/frame_sinks/mojo_frame_sink_manager.cc |
@@ -26,10 +26,15 @@ MojoFrameSinkManager::MojoFrameSinkManager(bool use_surface_references, |
display_provider_(display_provider), |
binding_(this) { |
manager_.AddObserver(this); |
+ dependency_tracker_ = base::MakeUnique<cc::SurfaceDependencyTracker>( |
+ &manager_, manager_.GetPrimaryBeginFrameSource()); |
+ manager_.SetDependencyTracker(dependency_tracker_.get()); |
} |
MojoFrameSinkManager::~MojoFrameSinkManager() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ manager_.SetDependencyTracker(nullptr); |
+ dependency_tracker_.reset(); |
manager_.RemoveObserver(this); |
} |
@@ -57,16 +62,6 @@ void MojoFrameSinkManager::CreateRootCompositorFrameSink( |
std::unique_ptr<cc::Display> display = display_provider_->CreateDisplay( |
frame_sink_id, surface_handle, &begin_frame_source); |
- // Lazily inject a SurfaceDependencyTracker into SurfaceManager if surface |
- // synchronization is enabled. |
- if (!manager_.dependency_tracker() && |
- base::CommandLine::ForCurrentProcess()->HasSwitch( |
- cc::switches::kEnableSurfaceSynchronization)) { |
- std::unique_ptr<cc::SurfaceDependencyTracker> dependency_tracker( |
- new cc::SurfaceDependencyTracker(&manager_, begin_frame_source.get())); |
- manager_.SetDependencyTracker(std::move(dependency_tracker)); |
- } |
- |
compositor_frame_sinks_[frame_sink_id] = |
base::MakeUnique<GpuRootCompositorFrameSink>( |
this, &manager_, frame_sink_id, std::move(display), |