| 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 "content/browser/compositor/gpu_process_transport_factory.h" | 5 #include "content/browser/compositor/gpu_process_transport_factory.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 int surface_id; | 67 int surface_id; |
| 68 scoped_refptr<ReflectorImpl> reflector; | 68 scoped_refptr<ReflectorImpl> reflector; |
| 69 scoped_ptr<cc::OnscreenDisplayClient> display_client; | 69 scoped_ptr<cc::OnscreenDisplayClient> display_client; |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 GpuProcessTransportFactory::GpuProcessTransportFactory() | 72 GpuProcessTransportFactory::GpuProcessTransportFactory() |
| 73 : next_surface_id_namespace_(1u), | 73 : next_surface_id_namespace_(1u), |
| 74 callback_factory_(this) { | 74 callback_factory_(this) { |
| 75 output_surface_proxy_ = new BrowserCompositorOutputSurfaceProxy( | 75 output_surface_proxy_ = new BrowserCompositorOutputSurfaceProxy( |
| 76 &output_surface_map_); | 76 &output_surface_map_); |
| 77 #if defined(OS_CHROMEOS) | 77 |
| 78 bool use_thread = !base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 79 switches::kUIDisableThreadedCompositing); | |
| 80 #else | |
| 81 bool use_thread = false; | |
| 82 #endif | |
| 83 if (use_thread) { | |
| 84 compositor_thread_.reset(new base::Thread("Browser Compositor")); | |
| 85 compositor_thread_->Start(); | |
| 86 } | |
| 87 if (UseSurfacesEnabled()) | 78 if (UseSurfacesEnabled()) |
| 88 surface_manager_ = make_scoped_ptr(new cc::SurfaceManager); | 79 surface_manager_ = make_scoped_ptr(new cc::SurfaceManager); |
| 89 } | 80 } |
| 90 | 81 |
| 91 GpuProcessTransportFactory::~GpuProcessTransportFactory() { | 82 GpuProcessTransportFactory::~GpuProcessTransportFactory() { |
| 92 DCHECK(per_compositor_data_.empty()); | 83 DCHECK(per_compositor_data_.empty()); |
| 93 | 84 |
| 94 // Make sure the lost context callback doesn't try to run during destruction. | 85 // Make sure the lost context callback doesn't try to run during destruction. |
| 95 callback_factory_.InvalidateWeakPtrs(); | 86 callback_factory_.InvalidateWeakPtrs(); |
| 96 } | 87 } |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 output_surface->set_display_client(display_client.get()); | 233 output_surface->set_display_client(display_client.get()); |
| 243 display_client->display()->Resize(compositor->size()); | 234 display_client->display()->Resize(compositor->size()); |
| 244 data->display_client = display_client.Pass(); | 235 data->display_client = display_client.Pass(); |
| 245 compositor->SetOutputSurface(output_surface.Pass()); | 236 compositor->SetOutputSurface(output_surface.Pass()); |
| 246 return; | 237 return; |
| 247 } | 238 } |
| 248 | 239 |
| 249 if (!context_provider.get()) { | 240 if (!context_provider.get()) { |
| 250 if (compositor_thread_.get()) { | 241 if (compositor_thread_.get()) { |
| 251 LOG(FATAL) << "Failed to create UI context, but can't use software" | 242 LOG(FATAL) << "Failed to create UI context, but can't use software" |
| 252 " compositing with browser threaded compositing. Aborting."; | 243 " compositing with browser threaded compositing. Aborting."; |
| 253 } | 244 } |
| 254 | 245 |
| 255 scoped_ptr<SoftwareBrowserCompositorOutputSurface> surface( | 246 scoped_ptr<SoftwareBrowserCompositorOutputSurface> surface( |
| 256 new SoftwareBrowserCompositorOutputSurface( | 247 new SoftwareBrowserCompositorOutputSurface( |
| 257 output_surface_proxy_, | 248 output_surface_proxy_, |
| 258 CreateSoftwareOutputDevice(compositor.get()), | 249 CreateSoftwareOutputDevice(compositor.get()), |
| 259 data->surface_id, | 250 data->surface_id, |
| 260 &output_surface_map_, | 251 &output_surface_map_, |
| 261 compositor->vsync_manager())); | 252 compositor->vsync_manager())); |
| 262 compositor->SetOutputSurface(surface.Pass()); | 253 compositor->SetOutputSurface(surface.Pass()); |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 539 FOR_EACH_OBSERVER(ImageTransportFactoryObserver, | 530 FOR_EACH_OBSERVER(ImageTransportFactoryObserver, |
| 540 observer_list_, | 531 observer_list_, |
| 541 OnLostResources()); | 532 OnLostResources()); |
| 542 | 533 |
| 543 // Kill things that use the shared context before killing the shared context. | 534 // Kill things that use the shared context before killing the shared context. |
| 544 lost_gl_helper.reset(); | 535 lost_gl_helper.reset(); |
| 545 lost_shared_main_thread_contexts = NULL; | 536 lost_shared_main_thread_contexts = NULL; |
| 546 } | 537 } |
| 547 | 538 |
| 548 } // namespace content | 539 } // namespace content |
| OLD | NEW |