| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/gpu/gpu_child_thread.h" | 5 #include "content/gpu/gpu_child_thread.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 | 139 |
| 140 return builder.Build(); | 140 return builder.Build(); |
| 141 } | 141 } |
| 142 | 142 |
| 143 } // namespace | 143 } // namespace |
| 144 | 144 |
| 145 GpuChildThread::GpuChildThread( | 145 GpuChildThread::GpuChildThread( |
| 146 gpu::GpuWatchdogThread* watchdog_thread, | 146 gpu::GpuWatchdogThread* watchdog_thread, |
| 147 bool dead_on_arrival, | 147 bool dead_on_arrival, |
| 148 const gpu::GPUInfo& gpu_info, | 148 const gpu::GPUInfo& gpu_info, |
| 149 const DeferredMessages& deferred_messages, | 149 std::vector<gpu::GpuInitLogMessage> deferred_messages, |
| 150 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory) | 150 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory) |
| 151 : ChildThreadImpl(GetOptions(gpu_memory_buffer_factory)), | 151 : ChildThreadImpl(GetOptions(gpu_memory_buffer_factory)), |
| 152 dead_on_arrival_(dead_on_arrival), | 152 dead_on_arrival_(dead_on_arrival), |
| 153 gpu_info_(gpu_info), | 153 gpu_info_(gpu_info), |
| 154 deferred_messages_(deferred_messages), | 154 deferred_messages_(std::move(deferred_messages)), |
| 155 in_browser_process_(false), | 155 in_browser_process_(false), |
| 156 gpu_memory_buffer_factory_(gpu_memory_buffer_factory) { | 156 gpu_memory_buffer_factory_(gpu_memory_buffer_factory) { |
| 157 watchdog_thread_ = watchdog_thread; | 157 watchdog_thread_ = watchdog_thread; |
| 158 #if defined(OS_WIN) | 158 #if defined(OS_WIN) |
| 159 target_services_ = NULL; | 159 target_services_ = NULL; |
| 160 #endif | 160 #endif |
| 161 g_thread_safe_sender.Get() = thread_safe_sender(); | 161 g_thread_safe_sender.Get() = thread_safe_sender(); |
| 162 } | 162 } |
| 163 | 163 |
| 164 GpuChildThread::GpuChildThread( | 164 GpuChildThread::GpuChildThread( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 183 switches::kSingleProcess) || | 183 switches::kSingleProcess) || |
| 184 base::CommandLine::ForCurrentProcess()->HasSwitch( | 184 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 185 switches::kInProcessGPU)); | 185 switches::kInProcessGPU)); |
| 186 | 186 |
| 187 if (!gl::init::InitializeGLOneOff()) | 187 if (!gl::init::InitializeGLOneOff()) |
| 188 VLOG(1) << "gl::init::InitializeGLOneOff failed"; | 188 VLOG(1) << "gl::init::InitializeGLOneOff failed"; |
| 189 | 189 |
| 190 g_thread_safe_sender.Get() = thread_safe_sender(); | 190 g_thread_safe_sender.Get() = thread_safe_sender(); |
| 191 } | 191 } |
| 192 | 192 |
| 193 GpuChildThread::~GpuChildThread() { | 193 GpuChildThread::~GpuChildThread() {} |
| 194 while (!deferred_messages_.empty()) { | |
| 195 delete deferred_messages_.front(); | |
| 196 deferred_messages_.pop(); | |
| 197 } | |
| 198 } | |
| 199 | 194 |
| 200 void GpuChildThread::Shutdown() { | 195 void GpuChildThread::Shutdown() { |
| 201 ChildThreadImpl::Shutdown(); | 196 ChildThreadImpl::Shutdown(); |
| 202 logging::SetLogMessageHandler(NULL); | 197 logging::SetLogMessageHandler(NULL); |
| 203 } | 198 } |
| 204 | 199 |
| 205 void GpuChildThread::Init(const base::Time& process_start_time) { | 200 void GpuChildThread::Init(const base::Time& process_start_time) { |
| 206 process_start_time_ = process_start_time; | 201 process_start_time_ = process_start_time; |
| 207 | 202 |
| 208 #if defined(OS_ANDROID) | 203 #if defined(OS_ANDROID) |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 gpu_info_.video_encode_accelerator_supported_profiles = | 319 gpu_info_.video_encode_accelerator_supported_profiles = |
| 325 media::GpuVideoEncodeAccelerator::GetSupportedProfiles( | 320 media::GpuVideoEncodeAccelerator::GetSupportedProfiles( |
| 326 gpu_preferences_); | 321 gpu_preferences_); |
| 327 gpu_info_.jpeg_decode_accelerator_supported = | 322 gpu_info_.jpeg_decode_accelerator_supported = |
| 328 media::GpuJpegDecodeAccelerator::IsSupported(); | 323 media::GpuJpegDecodeAccelerator::IsSupported(); |
| 329 | 324 |
| 330 // Record initialization only after collecting the GPU info because that can | 325 // Record initialization only after collecting the GPU info because that can |
| 331 // take a significant amount of time. | 326 // take a significant amount of time. |
| 332 gpu_info_.initialization_time = base::Time::Now() - process_start_time_; | 327 gpu_info_.initialization_time = base::Time::Now() - process_start_time_; |
| 333 Send(new GpuHostMsg_Initialized(!dead_on_arrival_, gpu_info_)); | 328 Send(new GpuHostMsg_Initialized(!dead_on_arrival_, gpu_info_)); |
| 334 while (!deferred_messages_.empty()) { | 329 for (const auto& msg : deferred_messages_) |
| 335 Send(deferred_messages_.front()); | 330 Send(new GpuHostMsg_OnLogMessage(msg.severity, msg.header, msg.message)); |
| 336 deferred_messages_.pop(); | 331 deferred_messages_.clear(); |
| 337 } | |
| 338 | 332 |
| 339 if (dead_on_arrival_) { | 333 if (dead_on_arrival_) { |
| 340 LOG(ERROR) << "Exiting GPU process due to errors during initialization"; | 334 LOG(ERROR) << "Exiting GPU process due to errors during initialization"; |
| 341 base::MessageLoop::current()->QuitWhenIdle(); | 335 base::MessageLoop::current()->QuitWhenIdle(); |
| 342 return; | 336 return; |
| 343 } | 337 } |
| 344 | 338 |
| 345 // We don't need to pipe log messages if we are running the GPU thread in | 339 // We don't need to pipe log messages if we are running the GPU thread in |
| 346 // the browser process. | 340 // the browser process. |
| 347 if (!in_browser_process_) | 341 if (!in_browser_process_) |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 | 538 |
| 545 void GpuChildThread::BindServiceFactoryRequest( | 539 void GpuChildThread::BindServiceFactoryRequest( |
| 546 shell::mojom::ServiceFactoryRequest request) { | 540 shell::mojom::ServiceFactoryRequest request) { |
| 547 DVLOG(1) << "GPU: Binding shell::mojom::ServiceFactoryRequest"; | 541 DVLOG(1) << "GPU: Binding shell::mojom::ServiceFactoryRequest"; |
| 548 DCHECK(service_factory_); | 542 DCHECK(service_factory_); |
| 549 service_factory_bindings_.AddBinding(service_factory_.get(), | 543 service_factory_bindings_.AddBinding(service_factory_.get(), |
| 550 std::move(request)); | 544 std::move(request)); |
| 551 } | 545 } |
| 552 | 546 |
| 553 } // namespace content | 547 } // namespace content |
| OLD | NEW |