| 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 : next_surface_id_namespace_(1u), | 101 : next_surface_id_namespace_(1u), |
| 102 task_graph_runner_(new cc::TaskGraphRunner), | 102 task_graph_runner_(new cc::TaskGraphRunner), |
| 103 callback_factory_(this) { | 103 callback_factory_(this) { |
| 104 if (UseSurfacesEnabled()) | 104 if (UseSurfacesEnabled()) |
| 105 surface_manager_ = make_scoped_ptr(new cc::SurfaceManager); | 105 surface_manager_ = make_scoped_ptr(new cc::SurfaceManager); |
| 106 | 106 |
| 107 if (ui::IsUIImplSidePaintingEnabled()) { | 107 if (ui::IsUIImplSidePaintingEnabled()) { |
| 108 raster_thread_.reset(new RasterThread(task_graph_runner_.get())); | 108 raster_thread_.reset(new RasterThread(task_graph_runner_.get())); |
| 109 raster_thread_->Start(); | 109 raster_thread_->Start(); |
| 110 } | 110 } |
| 111 #if defined(OS_WIN) |
| 112 software_backing_.reset(new OutputDeviceBacking); |
| 113 #endif |
| 111 } | 114 } |
| 112 | 115 |
| 113 GpuProcessTransportFactory::~GpuProcessTransportFactory() { | 116 GpuProcessTransportFactory::~GpuProcessTransportFactory() { |
| 114 DCHECK(per_compositor_data_.empty()); | 117 DCHECK(per_compositor_data_.empty()); |
| 115 | 118 |
| 116 // Make sure the lost context callback doesn't try to run during destruction. | 119 // Make sure the lost context callback doesn't try to run during destruction. |
| 117 callback_factory_.InvalidateWeakPtrs(); | 120 callback_factory_.InvalidateWeakPtrs(); |
| 118 | 121 |
| 119 task_graph_runner_->Shutdown(); | 122 task_graph_runner_->Shutdown(); |
| 120 if (raster_thread_) | 123 if (raster_thread_) |
| 121 raster_thread_->Join(); | 124 raster_thread_->Join(); |
| 122 } | 125 } |
| 123 | 126 |
| 124 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> | 127 scoped_ptr<WebGraphicsContext3DCommandBufferImpl> |
| 125 GpuProcessTransportFactory::CreateOffscreenCommandBufferContext() { | 128 GpuProcessTransportFactory::CreateOffscreenCommandBufferContext() { |
| 126 CauseForGpuLaunch cause = | 129 CauseForGpuLaunch cause = |
| 127 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE; | 130 CAUSE_FOR_GPU_LAUNCH_WEBGRAPHICSCONTEXT3DCOMMANDBUFFERIMPL_INITIALIZE; |
| 128 scoped_refptr<GpuChannelHost> gpu_channel_host( | 131 scoped_refptr<GpuChannelHost> gpu_channel_host( |
| 129 BrowserGpuChannelHostFactory::instance()->EstablishGpuChannelSync(cause)); | 132 BrowserGpuChannelHostFactory::instance()->EstablishGpuChannelSync(cause)); |
| 130 return CreateContextCommon(gpu_channel_host, 0); | 133 return CreateContextCommon(gpu_channel_host, 0); |
| 131 } | 134 } |
| 132 | 135 |
| 133 scoped_ptr<cc::SoftwareOutputDevice> CreateSoftwareOutputDevice( | 136 scoped_ptr<cc::SoftwareOutputDevice> |
| 137 GpuProcessTransportFactory::CreateSoftwareOutputDevice( |
| 134 ui::Compositor* compositor) { | 138 ui::Compositor* compositor) { |
| 135 #if defined(OS_WIN) | 139 #if defined(OS_WIN) |
| 136 return scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareOutputDeviceWin( | 140 return scoped_ptr<cc::SoftwareOutputDevice>( |
| 137 compositor)); | 141 new SoftwareOutputDeviceWin(software_backing_.get(), compositor)); |
| 138 #elif defined(USE_OZONE) | 142 #elif defined(USE_OZONE) |
| 139 return scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareOutputDeviceOzone( | 143 return scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareOutputDeviceOzone( |
| 140 compositor)); | 144 compositor)); |
| 141 #elif defined(USE_X11) | 145 #elif defined(USE_X11) |
| 142 return scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareOutputDeviceX11( | 146 return scoped_ptr<cc::SoftwareOutputDevice>(new SoftwareOutputDeviceX11( |
| 143 compositor)); | 147 compositor)); |
| 144 #elif defined(OS_MACOSX) | 148 #elif defined(OS_MACOSX) |
| 145 return scoped_ptr<cc::SoftwareOutputDevice>( | 149 return scoped_ptr<cc::SoftwareOutputDevice>( |
| 146 new SoftwareOutputDeviceMac(compositor)); | 150 new SoftwareOutputDeviceMac(compositor)); |
| 147 #else | 151 #else |
| (...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 FOR_EACH_OBSERVER(ImageTransportFactoryObserver, | 603 FOR_EACH_OBSERVER(ImageTransportFactoryObserver, |
| 600 observer_list_, | 604 observer_list_, |
| 601 OnLostResources()); | 605 OnLostResources()); |
| 602 | 606 |
| 603 // Kill things that use the shared context before killing the shared context. | 607 // Kill things that use the shared context before killing the shared context. |
| 604 lost_gl_helper.reset(); | 608 lost_gl_helper.reset(); |
| 605 lost_shared_main_thread_contexts = NULL; | 609 lost_shared_main_thread_contexts = NULL; |
| 606 } | 610 } |
| 607 | 611 |
| 608 } // namespace content | 612 } // namespace content |
| OLD | NEW |