Index: mojo/examples/surfaces_app/child_gl_impl.cc |
diff --git a/mojo/examples/surfaces_app/child_gl_impl.cc b/mojo/examples/surfaces_app/child_gl_impl.cc |
index ec135fe3432f122b01c26419f999d22781746479..72374fb937dcc03771fead57593d56ec99fa9bcc 100644 |
--- a/mojo/examples/surfaces_app/child_gl_impl.cc |
+++ b/mojo/examples/surfaces_app/child_gl_impl.cc |
@@ -44,9 +44,12 @@ static void ContextLostThunk(void*) { |
ChildGLImpl::ChildGLImpl(ApplicationConnection* surfaces_service_connection, |
CommandBufferPtr command_buffer) |
- : start_time_(base::TimeTicks::Now()), next_resource_id_(1) { |
- surfaces_service_connection->ConnectToService(&surface_); |
- surface_.set_client(this); |
+ : start_time_(base::TimeTicks::Now()), |
+ next_resource_id_(1), |
+ weak_factory_(this) { |
+ surfaces_service_connection->ConnectToService(&surfaces_service_); |
+ surfaces_service_->CreateSurfaceConnection(base::Bind( |
+ &ChildGLImpl::SurfaceConnectionCreated, weak_factory_.GetWeakPtr())); |
context_ = |
MojoGLES2CreateContext(command_buffer.PassMessagePipe().release().value(), |
&ContextLostThunk, |
@@ -71,14 +74,15 @@ void ChildGLImpl::ProduceFrame( |
cube_.set_color( |
SkColorGetR(color_), SkColorGetG(color_), SkColorGetB(color_)); |
produce_callback_ = callback; |
- if (allocator_) |
- AllocateSurface(); |
+ AllocateSurface(); |
} |
-void ChildGLImpl::SetIdNamespace(uint32_t id_namespace) { |
+void ChildGLImpl::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()) |
- AllocateSurface(); |
+ AllocateSurface(); |
} |
void ChildGLImpl::ReturnResources(Array<ReturnedResourcePtr> resources) { |