Index: examples/surfaces_app/child_gl_impl.cc |
diff --git a/examples/surfaces_app/child_gl_impl.cc b/examples/surfaces_app/child_gl_impl.cc |
index cc4d9d1d437447087e0fc12632d8e6a3378330e3..35a27152500dcbc388aa003cba82860cf9128fc5 100644 |
--- a/examples/surfaces_app/child_gl_impl.cc |
+++ b/examples/surfaces_app/child_gl_impl.cc |
@@ -49,9 +49,9 @@ ChildGLImpl::ChildGLImpl(ApplicationConnection* surfaces_service_connection, |
: 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())); |
+ surfaces_service_connection->ConnectToService(&surface_); |
+ surface_.set_client(this); |
+ surface_.WaitForIncomingMethodCall(); // Wait for ID namespace to arrive. |
context_ = |
MojoGLES2CreateContext(command_buffer.PassMessagePipe().release().value(), |
&ContextLostThunk, |
@@ -75,16 +75,14 @@ void ChildGLImpl::ProduceFrame( |
cube_.Init(size_.width(), size_.height()); |
cube_.set_color( |
SkColorGetR(color_), SkColorGetG(color_), SkColorGetB(color_)); |
- produce_callback_ = callback; |
- AllocateSurface(); |
+ id_ = allocator_->GenerateId(); |
+ surface_->CreateSurface(mojo::SurfaceId::From(id_)); |
+ callback.Run(SurfaceId::From(id_)); |
+ Draw(); |
} |
-void ChildGLImpl::SurfaceConnectionCreated(SurfacePtr surface, |
- uint32_t id_namespace) { |
- surface_ = surface.Pass(); |
- surface_.set_client(this); |
+void ChildGLImpl::SetIdNamespace(uint32_t id_namespace) { |
allocator_.reset(new cc::SurfaceIdAllocator(id_namespace)); |
- AllocateSurface(); |
} |
void ChildGLImpl::ReturnResources(Array<ReturnedResourcePtr> resources) { |
@@ -95,16 +93,6 @@ void ChildGLImpl::ReturnResources(Array<ReturnedResourcePtr> resources) { |
} |
} |
-void ChildGLImpl::AllocateSurface() { |
- if (produce_callback_.is_null() || !allocator_) |
- return; |
- |
- id_ = allocator_->GenerateId(); |
- surface_->CreateSurface(mojo::SurfaceId::From(id_), mojo::Size::From(size_)); |
- produce_callback_.Run(SurfaceId::From(id_)); |
- Draw(); |
-} |
- |
void ChildGLImpl::Draw() { |
// First, generate a GL texture and draw the cube into it. |
GLuint texture = 0u; |