| 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..9749ffcfc26f646707b43cef69af50ac20e0d2cb 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_) {
|
| + SurfaceManager* manager = manager_->GetSurfaceManager();
|
| + manager->UnregisterSurfaceFactoryClient(manager_->id_namespace(), nullptr);
|
| + }
|
| }
|
|
|
| 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;
|
| + SurfaceManager* manager = manager_->GetSurfaceManager();
|
| + manager->RegisterSurfaceFactoryClient(manager_->id_namespace(), this);
|
| +}
|
| +
|
| ServerWindow* ServerWindowSurface::window() {
|
| return manager_->window();
|
| }
|
|
|