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

Unified Diff: ui/compositor/compositor.cc

Issue 2383373002: Reduce SurfaceIdAllocator usage and tie SurfaceFactory to a single FrameSinkId (Closed)
Patch Set: Rebased Created 4 years, 2 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 | « ui/compositor/compositor.h ('k') | ui/compositor/compositor_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/compositor.cc
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index 7354f963f8f5ffbc3e95070ad461bf3f300855e1..a8fb1a79dac9ae81eaa895625548add6f881f6ad 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -81,8 +81,9 @@ Compositor::Compositor(ui::ContextFactory* context_factory,
#endif
widget_valid_(false),
compositor_frame_sink_requested_(false),
- surface_id_allocator_(base::MakeUnique<cc::SurfaceIdAllocator>(
- context_factory->AllocateFrameSinkId())),
+ frame_sink_id_(context_factory->AllocateFrameSinkId()),
+ surface_id_allocator_(
+ base::MakeUnique<cc::SurfaceIdAllocator>(frame_sink_id_)),
task_runner_(task_runner),
vsync_manager_(new CompositorVSyncManager()),
device_scale_factor_(0.0f),
@@ -90,8 +91,7 @@ Compositor::Compositor(ui::ContextFactory* context_factory,
compositor_lock_(NULL),
layer_animator_collection_(this),
weak_ptr_factory_(this) {
- context_factory->GetSurfaceManager()->RegisterFrameSinkId(
- surface_id_allocator_->frame_sink_id());
+ context_factory->GetSurfaceManager()->RegisterFrameSinkId(frame_sink_id_);
root_web_layer_ = cc::Layer::Create();
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
@@ -206,7 +206,7 @@ Compositor::Compositor(ui::ContextFactory* context_factory,
animation_timeline_.get());
host_->GetLayerTree()->SetRootLayer(root_web_layer_);
- host_->SetFrameSinkId(surface_id_allocator_->frame_sink_id());
+ host_->SetFrameSinkId(frame_sink_id_);
host_->SetVisible(true);
}
@@ -235,28 +235,26 @@ Compositor::~Compositor() {
context_factory_->RemoveCompositor(this);
auto* manager = context_factory_->GetSurfaceManager();
- for (auto& client : frame_sinks_) {
- DCHECK(!client.second.is_null());
- manager->UnregisterFrameSinkHierarchy(client.second, client.first);
+ for (auto& client : child_frame_sinks_) {
+ DCHECK(!client.is_null());
+ manager->UnregisterFrameSinkHierarchy(frame_sink_id_, client);
}
- manager->InvalidateFrameSinkId(surface_id_allocator_->frame_sink_id());
+ manager->InvalidateFrameSinkId(frame_sink_id_);
}
void Compositor::AddFrameSink(const cc::FrameSinkId& frame_sink_id) {
- const cc::FrameSinkId& parent_frame_sink_id =
- surface_id_allocator_->frame_sink_id();
context_factory_->GetSurfaceManager()->RegisterFrameSinkHierarchy(
- parent_frame_sink_id, frame_sink_id);
- frame_sinks_[frame_sink_id] = parent_frame_sink_id;
+ frame_sink_id_, frame_sink_id);
+ child_frame_sinks_.insert(frame_sink_id);
}
void Compositor::RemoveFrameSink(const cc::FrameSinkId& frame_sink_id) {
- auto it = frame_sinks_.find(frame_sink_id);
- DCHECK(it != frame_sinks_.end());
- DCHECK(!it->second.is_null());
+ auto it = child_frame_sinks_.find(frame_sink_id);
+ DCHECK(it != child_frame_sinks_.end());
+ DCHECK(!it->is_null());
context_factory_->GetSurfaceManager()->UnregisterFrameSinkHierarchy(
- it->second, it->first);
- frame_sinks_.erase(it);
+ frame_sink_id_, *it);
+ child_frame_sinks_.erase(it);
}
void Compositor::SetCompositorFrameSink(
« no previous file with comments | « ui/compositor/compositor.h ('k') | ui/compositor/compositor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698