Index: examples/bitmap_uploader/bitmap_uploader.cc |
diff --git a/examples/bitmap_uploader/bitmap_uploader.cc b/examples/bitmap_uploader/bitmap_uploader.cc |
index 07becf6c7a03b2d8c6cf5edeac94fd493a176967..48b4cc72e1dcacdc3b0e368a737dcbfeb6f25c84 100644 |
--- a/examples/bitmap_uploader/bitmap_uploader.cc |
+++ b/examples/bitmap_uploader/bitmap_uploader.cc |
@@ -38,22 +38,22 @@ BitmapUploader::BitmapUploader(View* view) |
height_(0), |
format_(BGRA), |
next_resource_id_(1u), |
- id_namespace_(0), |
- weak_factory_(this) { |
+ id_namespace_(0u), |
+ local_id_(0u) { |
} |
void BitmapUploader::Init(Shell* shell) { |
ServiceProviderPtr surfaces_service_provider; |
shell->ConnectToApplication("mojo:surfaces_service", |
GetProxy(&surfaces_service_provider)); |
- ConnectToService(surfaces_service_provider.get(), &surfaces_service_); |
+ ConnectToService(surfaces_service_provider.get(), &surface_); |
+ surface_.set_client(this); |
+ |
ServiceProviderPtr gpu_service_provider; |
shell->ConnectToApplication("mojo:native_viewport_service", |
GetProxy(&gpu_service_provider)); |
ConnectToService(gpu_service_provider.get(), &gpu_service_); |
- surfaces_service_->CreateSurfaceConnection(base::Bind( |
- &BitmapUploader::OnSurfaceConnectionCreated, weak_factory_.GetWeakPtr())); |
CommandBufferPtr gles2_client; |
gpu_service_->CreateOffscreenGLES2Context(GetProxy(&gles2_client)); |
gles2_context_ = |
@@ -96,19 +96,20 @@ void BitmapUploader::Upload() { |
view_->SetSurfaceId(SurfaceId::New()); |
return; |
} |
- if (!surface_) // Can't upload yet, store for later. |
+ if (id_namespace_ == 0u) // Can't generate a qualified ID yet. |
return; |
- if (!surface_id_ || size != surface_size_) { |
- if (surface_id_) { |
- surface_->DestroySurface(surface_id_.Clone()); |
- } else { |
- surface_id_ = SurfaceId::New(); |
- surface_id_->id_namespace = id_namespace_; |
+ |
+ if (size != surface_size_) { |
+ if (local_id_ != 0u) { |
+ surface_->DestroySurface(local_id_); |
} |
- surface_id_->local++; |
- surface_->CreateSurface(surface_id_.Clone()); |
- view_->SetSurfaceId(surface_id_.Clone()); |
+ local_id_++; |
+ surface_->CreateSurface(local_id_); |
surface_size_ = size; |
+ auto qualified_id = SurfaceId::New(); |
+ qualified_id->id_namespace = id_namespace_; |
+ qualified_id->local = local_id_; |
+ view_->SetSurfaceId(qualified_id.Pass()); |
} |
Rect bounds; |
@@ -222,10 +223,13 @@ void BitmapUploader::Upload() { |
frame->passes.push_back(pass.Pass()); |
- surface_->SubmitFrame(surface_id_.Clone(), frame.Pass(), mojo::Closure()); |
+ surface_->SubmitFrame(local_id_, frame.Pass(), mojo::Closure()); |
} |
void BitmapUploader::SetIdNamespace(uint32_t id_namespace) { |
+ id_namespace_ = id_namespace; |
+ if (color_ != TRANSPARENT_COLOR || bitmap_.get()) |
+ Upload(); |
} |
void BitmapUploader::ReturnResources(Array<ReturnedResourcePtr> resources) { |
@@ -244,15 +248,6 @@ void BitmapUploader::ReturnResources(Array<ReturnedResourcePtr> resources) { |
} |
} |
-void BitmapUploader::OnSurfaceConnectionCreated(SurfacePtr surface, |
- uint32_t id_namespace) { |
- surface_ = surface.Pass(); |
- surface_.set_client(this); |
- id_namespace_ = id_namespace; |
- if (color_ != TRANSPARENT_COLOR || bitmap_.get()) |
- Upload(); |
-} |
- |
uint32_t BitmapUploader::BindTextureForSize(const Size size) { |
// TODO(jamesr): Recycle textures. |
GLuint texture = 0u; |