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

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

Issue 2908473002: Revert of cc::SurfaceDependencyTracker should not crash when a Display goes away (Closed)
Patch Set: 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 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>(
« 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