| Index: ui/compositor/compositor.cc
|
| diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
|
| index 27b52437bd20c54ae9e7e5b3e6e3addacc7ebcaf..427d79ac23154e60e464629551f73fb57bdad2f4 100644
|
| --- a/ui/compositor/compositor.cc
|
| +++ b/ui/compositor/compositor.cc
|
| @@ -89,10 +89,8 @@ Compositor::Compositor(ui::ContextFactory* context_factory,
|
| compositor_lock_(NULL),
|
| layer_animator_collection_(this),
|
| weak_ptr_factory_(this) {
|
| - if (context_factory->GetSurfaceManager()) {
|
| - context_factory->GetSurfaceManager()->RegisterSurfaceClientId(
|
| - surface_id_allocator_->client_id());
|
| - }
|
| + context_factory->GetSurfaceManager()->RegisterSurfaceClientId(
|
| + surface_id_allocator_->client_id());
|
| root_web_layer_ = cc::Layer::Create();
|
|
|
| base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| @@ -242,37 +240,27 @@ Compositor::~Compositor() {
|
| host_.reset();
|
|
|
| context_factory_->RemoveCompositor(this);
|
| - if (context_factory_->GetSurfaceManager()) {
|
| - for (auto& client : surface_clients_) {
|
| - if (client.second) {
|
| - context_factory_->GetSurfaceManager()
|
| - ->UnregisterSurfaceNamespaceHierarchy(client.second, client.first);
|
| - }
|
| - }
|
| - context_factory_->GetSurfaceManager()->InvalidateSurfaceClientId(
|
| - surface_id_allocator_->client_id());
|
| + auto* manager = context_factory_->GetSurfaceManager();
|
| + for (auto& client : surface_clients_) {
|
| + DCHECK(client.second);
|
| + manager->UnregisterSurfaceNamespaceHierarchy(client.second, client.first);
|
| }
|
| + manager->InvalidateSurfaceClientId(surface_id_allocator_->client_id());
|
| }
|
|
|
| void Compositor::AddSurfaceClient(uint32_t client_id) {
|
| - // We don't give the client a parent until the ui::Compositor has an
|
| - // OutputSurface.
|
| - uint32_t parent_client_id = 0;
|
| - if (host_->has_output_surface()) {
|
| - parent_client_id = surface_id_allocator_->client_id();
|
| - context_factory_->GetSurfaceManager()->RegisterSurfaceNamespaceHierarchy(
|
| - parent_client_id, client_id);
|
| - }
|
| + uint32_t parent_client_id = surface_id_allocator_->client_id();
|
| + context_factory_->GetSurfaceManager()->RegisterSurfaceNamespaceHierarchy(
|
| + parent_client_id, client_id);
|
| surface_clients_[client_id] = parent_client_id;
|
| }
|
|
|
| void Compositor::RemoveSurfaceClient(uint32_t client_id) {
|
| auto it = surface_clients_.find(client_id);
|
| DCHECK(it != surface_clients_.end());
|
| - if (host_->has_output_surface()) {
|
| - context_factory_->GetSurfaceManager()->UnregisterSurfaceNamespaceHierarchy(
|
| - it->second, client_id);
|
| - }
|
| + DCHECK(it->second);
|
| + context_factory_->GetSurfaceManager()->UnregisterSurfaceNamespaceHierarchy(
|
| + it->second, it->first);
|
| surface_clients_.erase(it);
|
| }
|
|
|
| @@ -280,21 +268,6 @@ void Compositor::SetOutputSurface(
|
| std::unique_ptr<cc::OutputSurface> output_surface) {
|
| output_surface_requested_ = false;
|
| host_->SetOutputSurface(std::move(output_surface));
|
| - // ui::Compositor uses a SingleThreadProxy and so BindToClient will be called
|
| - // above and SurfaceManager will be made aware of the OutputSurface's client
|
| - // ID.
|
| - for (auto& client : surface_clients_) {
|
| - if (client.second == surface_id_allocator_->client_id())
|
| - continue;
|
| - // If a client already has a parent, then we unregister the existing parent.
|
| - if (client.second) {
|
| - context_factory_->GetSurfaceManager()
|
| - ->UnregisterSurfaceNamespaceHierarchy(client.second, client.first);
|
| - }
|
| - context_factory_->GetSurfaceManager()->RegisterSurfaceNamespaceHierarchy(
|
| - surface_id_allocator_->client_id(), client.first);
|
| - client.second = surface_id_allocator_->client_id();
|
| - }
|
| // Visibility is reset when the output surface is lost, so update it to match
|
| // the Compositor's.
|
| context_factory_->SetDisplayVisible(this, host_->visible());
|
| @@ -418,14 +391,7 @@ void Compositor::SetAcceleratedWidget(gfx::AcceleratedWidget widget) {
|
|
|
| gfx::AcceleratedWidget Compositor::ReleaseAcceleratedWidget() {
|
| DCHECK(!IsVisible());
|
| - if (!host_->output_surface_lost()) {
|
| - host_->ReleaseOutputSurface();
|
| - for (auto& client : surface_clients_) {
|
| - context_factory_->GetSurfaceManager()
|
| - ->UnregisterSurfaceNamespaceHierarchy(client.second, client.first);
|
| - client.second = 0;
|
| - }
|
| - }
|
| + host_->ReleaseOutputSurface();
|
| context_factory_->RemoveCompositor(this);
|
| widget_valid_ = false;
|
| gfx::AcceleratedWidget widget = widget_;
|
| @@ -506,9 +472,8 @@ void Compositor::UpdateLayerTreeHost() {
|
| void Compositor::RequestNewOutputSurface() {
|
| DCHECK(!output_surface_requested_);
|
| output_surface_requested_ = true;
|
| - if (widget_valid_) {
|
| + if (widget_valid_)
|
| context_factory_->CreateOutputSurface(weak_ptr_factory_.GetWeakPtr());
|
| - }
|
| }
|
|
|
| void Compositor::DidInitializeOutputSurface() {
|
|
|