| OLD | NEW |
| 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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 } | 125 } |
| 126 | 126 |
| 127 void TextureUploader::EnsureSurfaceForSize(const mojo::Size& size) { | 127 void TextureUploader::EnsureSurfaceForSize(const mojo::Size& size) { |
| 128 if (surface_id_ && size == surface_size_) | 128 if (surface_id_ && size == surface_size_) |
| 129 return; | 129 return; |
| 130 | 130 |
| 131 if (surface_id_) { | 131 if (surface_id_) { |
| 132 surface_->DestroySurface(surface_id_.Clone()); | 132 surface_->DestroySurface(surface_id_.Clone()); |
| 133 } else { | 133 } else { |
| 134 surface_id_ = mojo::SurfaceId::New(); | 134 surface_id_ = mojo::SurfaceId::New(); |
| 135 surface_id_->id = static_cast<uint64_t>(id_namespace_) << 32; | 135 surface_id_->id_namespace = id_namespace_; |
| 136 } | 136 } |
| 137 | 137 |
| 138 surface_id_->id++; | 138 surface_id_->local++; |
| 139 surface_->CreateSurface(surface_id_.Clone(), size.Clone()); | 139 surface_->CreateSurface(surface_id_.Clone()); |
| 140 client_->OnSurfaceIdAvailable(surface_id_.Clone()); | 140 client_->OnSurfaceIdAvailable(surface_id_.Clone()); |
| 141 surface_size_ = size; | 141 surface_size_ = size; |
| 142 } | 142 } |
| 143 | 143 |
| 144 void TextureUploader::OnContextLost() { | 144 void TextureUploader::OnContextLost() { |
| 145 LOG(FATAL) << "Context lost."; | 145 LOG(FATAL) << "Context lost."; |
| 146 } | 146 } |
| 147 | 147 |
| 148 void TextureUploader::SetIdNamespace(uint32_t id_namespace) { |
| 149 } |
| 150 |
| 148 void TextureUploader::ReturnResources( | 151 void TextureUploader::ReturnResources( |
| 149 mojo::Array<mojo::ReturnedResourcePtr> resources) { | 152 mojo::Array<mojo::ReturnedResourcePtr> resources) { |
| 150 if (!resources.size()) | 153 if (!resources.size()) |
| 151 return; | 154 return; |
| 152 context_->MakeCurrent(); | 155 context_->MakeCurrent(); |
| 153 for (size_t i = 0u; i < resources.size(); ++i) { | 156 for (size_t i = 0u; i < resources.size(); ++i) { |
| 154 mojo::ReturnedResourcePtr resource = resources[i].Pass(); | 157 mojo::ReturnedResourcePtr resource = resources[i].Pass(); |
| 155 DCHECK_EQ(1, resource->count); | 158 DCHECK_EQ(1, resource->count); |
| 156 glWaitSyncPointCHROMIUM(resource->sync_point); | 159 glWaitSyncPointCHROMIUM(resource->sync_point); |
| 157 mojo::GLTexture* texture = resource_to_texture_map_[resource->id]; | 160 mojo::GLTexture* texture = resource_to_texture_map_[resource->id]; |
| 158 DCHECK_NE(0u, texture->texture_id()); | 161 DCHECK_NE(0u, texture->texture_id()); |
| 159 resource_to_texture_map_.erase(resource->id); | 162 resource_to_texture_map_.erase(resource->id); |
| 160 delete texture; | 163 delete texture; |
| 161 } | 164 } |
| 162 } | 165 } |
| 163 | 166 |
| 164 void TextureUploader::OnSurfaceConnectionCreated(mojo::SurfacePtr surface, | 167 void TextureUploader::OnSurfaceConnectionCreated(mojo::SurfacePtr surface, |
| 165 uint32_t id_namespace) { | 168 uint32_t id_namespace) { |
| 166 surface_ = surface.Pass(); | 169 surface_ = surface.Pass(); |
| 167 surface_.set_client(this); | 170 surface_.set_client(this); |
| 168 id_namespace_ = id_namespace; | 171 id_namespace_ = id_namespace; |
| 169 | 172 |
| 170 if (pending_upload_) | 173 if (pending_upload_) |
| 171 Upload(pending_upload_.Pass()); | 174 Upload(pending_upload_.Pass()); |
| 172 } | 175 } |
| 173 | 176 |
| 174 } // namespace examples | 177 } // namespace examples |
| OLD | NEW |