| 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 "mojo/aura/surface_binding.h" | 5 #include "mojo/aura/surface_binding.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 if (view_map->empty()) { | 198 if (view_map->empty()) { |
| 199 delete view_map; | 199 delete view_map; |
| 200 view_states.Pointer()->Set(nullptr); | 200 view_states.Pointer()->Set(nullptr); |
| 201 } | 201 } |
| 202 } | 202 } |
| 203 | 203 |
| 204 void SurfaceBinding::PerViewManagerState::Init() { | 204 void SurfaceBinding::PerViewManagerState::Init() { |
| 205 DCHECK(!surfaces_service_.get()); | 205 DCHECK(!surfaces_service_.get()); |
| 206 | 206 |
| 207 ServiceProviderPtr surfaces_service_provider; | 207 ServiceProviderPtr surfaces_service_provider; |
| 208 shell_->ConnectToApplication("mojo:mojo_surfaces_service", | 208 shell_->ConnectToApplication("mojo:surfaces_service", |
| 209 GetProxy(&surfaces_service_provider)); | 209 GetProxy(&surfaces_service_provider)); |
| 210 ConnectToService(surfaces_service_provider.get(), &surfaces_service_); | 210 ConnectToService(surfaces_service_provider.get(), &surfaces_service_); |
| 211 // base::Unretained is ok here as we block until the call is received. | 211 // base::Unretained is ok here as we block until the call is received. |
| 212 surfaces_service_->CreateSurfaceConnection( | 212 surfaces_service_->CreateSurfaceConnection( |
| 213 base::Bind(&PerViewManagerState::OnCreatedSurfaceConnection, | 213 base::Bind(&PerViewManagerState::OnCreatedSurfaceConnection, |
| 214 base::Unretained(this))); | 214 base::Unretained(this))); |
| 215 // Block until we get the surface. This is done to make it easy for client | 215 // Block until we get the surface. This is done to make it easy for client |
| 216 // code. OTOH blocking is ick and leads to all sorts of problems. | 216 // code. OTOH blocking is ick and leads to all sorts of problems. |
| 217 // TODO(sky): ick! There needs to be a better way to deal with this. | 217 // TODO(sky): ick! There needs to be a better way to deal with this. |
| 218 surfaces_service_.WaitForIncomingMethodCall(); | 218 surfaces_service_.WaitForIncomingMethodCall(); |
| 219 DCHECK(surface_.get()); | 219 DCHECK(surface_.get()); |
| 220 surface_client_.reset(new SurfaceClientImpl); | 220 surface_client_.reset(new SurfaceClientImpl); |
| 221 surface_.set_client(surface_client_.get()); | 221 surface_.set_client(surface_client_.get()); |
| 222 | 222 |
| 223 ServiceProviderPtr gpu_service_provider; | 223 ServiceProviderPtr gpu_service_provider; |
| 224 // TODO(jamesr): Should be mojo:mojo_gpu_service | 224 // TODO(jamesr): Should be mojo:gpu_service |
| 225 shell_->ConnectToApplication("mojo:mojo_native_viewport_service", | 225 shell_->ConnectToApplication("mojo:native_viewport_service", |
| 226 GetProxy(&gpu_service_provider)); | 226 GetProxy(&gpu_service_provider)); |
| 227 ConnectToService(gpu_service_provider.get(), &gpu_); | 227 ConnectToService(gpu_service_provider.get(), &gpu_); |
| 228 } | 228 } |
| 229 | 229 |
| 230 void SurfaceBinding::PerViewManagerState::OnCreatedSurfaceConnection( | 230 void SurfaceBinding::PerViewManagerState::OnCreatedSurfaceConnection( |
| 231 SurfacePtr surface, | 231 SurfacePtr surface, |
| 232 uint32_t id_namespace) { | 232 uint32_t id_namespace) { |
| 233 surface_id_allocator_.reset(new cc::SurfaceIdAllocator(id_namespace)); | 233 surface_id_allocator_.reset(new cc::SurfaceIdAllocator(id_namespace)); |
| 234 surface_ = surface.Pass(); | 234 surface_ = surface.Pass(); |
| 235 } | 235 } |
| 236 | 236 |
| 237 // SurfaceBinding -------------------------------------------------------------- | 237 // SurfaceBinding -------------------------------------------------------------- |
| 238 | 238 |
| 239 SurfaceBinding::SurfaceBinding(Shell* shell, View* view) | 239 SurfaceBinding::SurfaceBinding(Shell* shell, View* view) |
| 240 : view_(view), | 240 : view_(view), |
| 241 state_(PerViewManagerState::Get(shell, view->view_manager())) { | 241 state_(PerViewManagerState::Get(shell, view->view_manager())) { |
| 242 } | 242 } |
| 243 | 243 |
| 244 SurfaceBinding::~SurfaceBinding() { | 244 SurfaceBinding::~SurfaceBinding() { |
| 245 } | 245 } |
| 246 | 246 |
| 247 scoped_ptr<cc::OutputSurface> SurfaceBinding::CreateOutputSurface() { | 247 scoped_ptr<cc::OutputSurface> SurfaceBinding::CreateOutputSurface() { |
| 248 return state_->CreateOutputSurface(view_); | 248 return state_->CreateOutputSurface(view_); |
| 249 } | 249 } |
| 250 | 250 |
| 251 } // namespace mojo | 251 } // namespace mojo |
| OLD | NEW |