| 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 673bd473420af0f1582f4d8710aa1c7deafcdf69..a41c1a4c6b5f898b69dae81e9b76c6a0390d4f7b 100644
|
| --- a/components/viz/frame_sinks/mojo_frame_sink_manager.cc
|
| +++ b/components/viz/frame_sinks/mojo_frame_sink_manager.cc
|
| @@ -26,15 +26,10 @@
|
| 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);
|
| }
|
|
|
| @@ -61,6 +56,16 @@
|
| std::unique_ptr<cc::BeginFrameSource> begin_frame_source;
|
| 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>(
|
|
|