Index: services/surfaces/surfaces_impl.cc |
diff --git a/services/surfaces/surfaces_impl.cc b/services/surfaces/surfaces_impl.cc |
index 1119985e2136247db91127871f0868b021458991..8a0ed59c0aa56d88c698a251bd715bd1de8f551f 100644 |
--- a/services/surfaces/surfaces_impl.cc |
+++ b/services/surfaces/surfaces_impl.cc |
@@ -70,6 +70,11 @@ void SurfacesImpl::SubmitFrame(uint32_t local_id, |
void SurfacesImpl::DestroySurface(uint32_t local_id) { |
factory_.Destroy(QualifyIdentifier(local_id)); |
+ if (local_id == displayed_surface_) { |
+ displayed_surface_ = 0; |
+ client_->OnDisplayBeingDestroyed(display_.get()); |
+ display_.reset(); |
+ } |
} |
void SurfacesImpl::CreateGLES2BoundSurface( |
@@ -86,6 +91,7 @@ void SurfacesImpl::CreateGLES2BoundSurface( |
display_->Initialize(make_scoped_ptr(new mojo::DirectOutputSurface( |
new mojo::ContextProviderMojo(command_buffer_handle_.Pass())))); |
} |
+ displayed_surface_ = local_id; |
cc::SurfaceId cc_id = QualifyIdentifier(local_id); |
factory_.Create(cc_id); |
display_->SetSurfaceId(cc_id, 1.f); |
@@ -136,6 +142,7 @@ SurfacesImpl::SurfacesImpl(cc::SurfaceManager* manager, |
factory_(manager, this), |
id_namespace_(id_namespace), |
client_(client), |
+ displayed_surface_(0), |
binding_(this) { |
} |