Chromium Code Reviews| Index: components/mus/ws/server_window_surface.cc |
| diff --git a/components/mus/ws/server_window_surface.cc b/components/mus/ws/server_window_surface.cc |
| index 9c836c9e478683f7aa0ce45219d02df9b59802d4..199ad3432f0a512b1214b7962acacec7eb964d80 100644 |
| --- a/components/mus/ws/server_window_surface.cc |
| +++ b/components/mus/ws/server_window_surface.cc |
| @@ -32,13 +32,10 @@ ServerWindowSurface::ServerWindowSurface( |
| : manager_(manager), |
| surface_type_(surface_type), |
| surface_id_(manager->GenerateId()), |
| - surface_factory_(manager_->window() |
| - ->delegate() |
| - ->GetSurfacesState() |
| - ->manager(), |
| - this), |
| + surface_factory_(manager_->GetSurfaceManager(), this), |
| client_(std::move(client)), |
| - binding_(this, std::move(request)) { |
| + binding_(this, std::move(request)), |
| + registered_surface_factory_client_(false) { |
| surface_factory_.Create(surface_id_); |
| } |
| @@ -47,6 +44,11 @@ ServerWindowSurface::~ServerWindowSurface() { |
| // call back into here and access |client_| so we should destroy |
| // |surface_factory_|'s resources early on. |
| surface_factory_.DestroyAll(); |
| + |
| + if (registered_surface_factory_client_) { |
| + cc::SurfaceManager* manager = manager_->GetSurfaceManager(); |
|
sky
2016/03/01 03:41:44
manager_ might already be through it's destructor.
enne (OOO)
2016/03/01 22:20:33
Ah, good catch. Changed the manager dtor to clear
|
| + manager->UnregisterSurfaceFactoryClient(manager_->id_namespace()); |
| + } |
| } |
| void ServerWindowSurface::SubmitCompositorFrame( |
| @@ -84,6 +86,13 @@ void ServerWindowSurface::DestroySurfacesScheduledForDestruction() { |
| surface_factory_.Destroy(id); |
| } |
| +void ServerWindowSurface::RegisterForBeginFrames() { |
| + DCHECK(!registered_surface_factory_client_); |
| + registered_surface_factory_client_ = true; |
| + cc::SurfaceManager* manager = manager_->GetSurfaceManager(); |
| + manager->RegisterSurfaceFactoryClient(manager_->id_namespace(), this); |
| +} |
| + |
| ServerWindow* ServerWindowSurface::window() { |
| return manager_->window(); |
| } |
| @@ -153,7 +162,6 @@ void ServerWindowSurface::ReturnResources( |
| } |
| void ServerWindowSurface::SetBeginFrameSource( |
| - cc::SurfaceId surface_id, |
| cc::BeginFrameSource* begin_frame_source) { |
| // TODO(tansell): Implement this. |
| } |