| Index: mojo/examples/surfaces_app/child_impl.cc
|
| diff --git a/mojo/examples/surfaces_app/child_impl.cc b/mojo/examples/surfaces_app/child_impl.cc
|
| index afefe09dc7540c3fdb035482ac6b96881c6f0739..963afb640ef7df7eec4d37ffb342f377c60d98f8 100644
|
| --- a/mojo/examples/surfaces_app/child_impl.cc
|
| +++ b/mojo/examples/surfaces_app/child_impl.cc
|
| @@ -28,13 +28,16 @@ using cc::SolidColorDrawQuad;
|
| using cc::DelegatedFrameData;
|
| using cc::CompositorFrame;
|
|
|
| -ChildImpl::ChildImpl(ApplicationConnection* surfaces_service_connection) {
|
| - surfaces_service_connection->ConnectToService(&surface_);
|
| - surface_.set_client(this);
|
| +ChildImpl::ChildImpl(ApplicationConnection* surfaces_service_connection)
|
| + : weak_factory_(this) {
|
| + surfaces_service_connection->ConnectToService(&surfaces_service_);
|
| + surfaces_service_->CreateSurfaceConnection(base::Bind(
|
| + &ChildImpl::SurfaceConnectionCreated, weak_factory_.GetWeakPtr()));
|
| }
|
|
|
| ChildImpl::~ChildImpl() {
|
| - surface_->DestroySurface(mojo::SurfaceId::From(id_));
|
| + if (surface_)
|
| + surface_->DestroySurface(mojo::SurfaceId::From(id_));
|
| }
|
|
|
| void ChildImpl::ProduceFrame(
|
| @@ -48,7 +51,10 @@ void ChildImpl::ProduceFrame(
|
| Draw();
|
| }
|
|
|
| -void ChildImpl::SetIdNamespace(uint32_t id_namespace) {
|
| +void ChildImpl::SurfaceConnectionCreated(SurfacePtr surface,
|
| + uint32_t id_namespace) {
|
| + surface_ = surface.Pass();
|
| + surface_.set_client(this);
|
| allocator_.reset(new cc::SurfaceIdAllocator(id_namespace));
|
| if (!produce_callback_.is_null())
|
| Draw();
|
|
|