Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(928)

Unified Diff: components/viz/frame_sinks/mojo_frame_sink_manager.cc

Issue 2880023002: cc::SurfaceDependencyTracker should not crash when a Display goes away (Closed)
Patch Set: Fix LayerTreeHostImpl unit tests Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/viz/frame_sinks/mojo_frame_sink_manager.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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),
« no previous file with comments | « components/viz/frame_sinks/mojo_frame_sink_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698