Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Side by Side Diff: examples/ganesh_app/texture_uploader.cc

Issue 871373015: De-Client Surface interface (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "examples/ganesh_app/texture_uploader.h" 5 #include "examples/ganesh_app/texture_uploader.h"
6 6
7 #ifndef GL_GLEXT_PROTOTYPES 7 #ifndef GL_GLEXT_PROTOTYPES
8 #define GL_GLEXT_PROTOTYPES 8 #define GL_GLEXT_PROTOTYPES
9 #endif 9 #endif
10 10
(...skipping 12 matching lines...) Expand all
23 } 23 }
24 24
25 TextureUploader::TextureUploader(Client* client, 25 TextureUploader::TextureUploader(Client* client,
26 mojo::Shell* shell, 26 mojo::Shell* shell,
27 base::WeakPtr<mojo::GLContext> context) 27 base::WeakPtr<mojo::GLContext> context)
28 : client_(client), 28 : client_(client),
29 context_(context), 29 context_(context),
30 next_resource_id_(0u), 30 next_resource_id_(0u),
31 id_namespace_(0u), 31 id_namespace_(0u),
32 local_id_(0u), 32 local_id_(0u),
33 returner_binding_(this),
33 weak_factory_(this) { 34 weak_factory_(this) {
34 context_->AddObserver(this); 35 context_->AddObserver(this);
35 36
36 mojo::ServiceProviderPtr surfaces_service_provider; 37 mojo::ServiceProviderPtr surfaces_service_provider;
37 shell->ConnectToApplication("mojo:surfaces_service", 38 shell->ConnectToApplication("mojo:surfaces_service",
38 mojo::GetProxy(&surfaces_service_provider), 39 mojo::GetProxy(&surfaces_service_provider),
39 nullptr); 40 nullptr);
40 mojo::ConnectToService(surfaces_service_provider.get(), &surface_); 41 mojo::ConnectToService(surfaces_service_provider.get(), &surface_);
41 surface_.set_client(this); 42 surface_->GetIdNamespace(
43 base::Bind(&TextureUploader::SetIdNamespace, base::Unretained(this)));
44 mojo::ResourceReturnerPtr returner_ptr;
45 returner_binding_.Bind(GetProxy(&returner_ptr));
46 surface_->SetResourceReturner(returner_ptr.Pass());
42 } 47 }
43 48
44 TextureUploader::~TextureUploader() { 49 TextureUploader::~TextureUploader() {
45 if (context_.get()) 50 if (context_.get())
46 context_->RemoveObserver(this); 51 context_->RemoveObserver(this);
47 } 52 }
48 53
49 void TextureUploader::Upload(scoped_ptr<mojo::GLTexture> texture) { 54 void TextureUploader::Upload(scoped_ptr<mojo::GLTexture> texture) {
50 if (!surface_) { 55 if (!surface_) {
51 pending_upload_ = texture.Pass(); 56 pending_upload_ = texture.Pass();
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 } 152 }
148 153
149 void TextureUploader::SetIdNamespace(uint32_t id_namespace) { 154 void TextureUploader::SetIdNamespace(uint32_t id_namespace) {
150 id_namespace_ = id_namespace; 155 id_namespace_ = id_namespace;
151 if (local_id_ != 0u) 156 if (local_id_ != 0u)
152 SendFullyQualifiedID(); 157 SendFullyQualifiedID();
153 } 158 }
154 159
155 void TextureUploader::ReturnResources( 160 void TextureUploader::ReturnResources(
156 mojo::Array<mojo::ReturnedResourcePtr> resources) { 161 mojo::Array<mojo::ReturnedResourcePtr> resources) {
157 if (!resources.size())
158 return;
159 context_->MakeCurrent(); 162 context_->MakeCurrent();
160 for (size_t i = 0u; i < resources.size(); ++i) { 163 for (size_t i = 0u; i < resources.size(); ++i) {
161 mojo::ReturnedResourcePtr resource = resources[i].Pass(); 164 mojo::ReturnedResourcePtr resource = resources[i].Pass();
162 DCHECK_EQ(1, resource->count); 165 DCHECK_EQ(1, resource->count);
163 glWaitSyncPointCHROMIUM(resource->sync_point); 166 glWaitSyncPointCHROMIUM(resource->sync_point);
164 mojo::GLTexture* texture = resource_to_texture_map_[resource->id]; 167 mojo::GLTexture* texture = resource_to_texture_map_[resource->id];
165 DCHECK_NE(0u, texture->texture_id()); 168 DCHECK_NE(0u, texture->texture_id());
166 resource_to_texture_map_.erase(resource->id); 169 resource_to_texture_map_.erase(resource->id);
167 delete texture; 170 delete texture;
168 } 171 }
169 } 172 }
170 173
171 } // namespace examples 174 } // namespace examples
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698