| 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 "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/threading/worker_pool.h" | 9 #include "base/threading/worker_pool.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 const std::string& str) { | 37 const std::string& str) { |
| 38 std::string header = str.substr(0, message_start); | 38 std::string header = str.substr(0, message_start); |
| 39 std::string message = str.substr(message_start); | 39 std::string message = str.substr(message_start); |
| 40 | 40 |
| 41 g_thread_safe_sender.Get()->Send(new GpuHostMsg_OnLogMessage( | 41 g_thread_safe_sender.Get()->Send(new GpuHostMsg_OnLogMessage( |
| 42 severity, header, message)); | 42 severity, header, message)); |
| 43 | 43 |
| 44 return false; | 44 return false; |
| 45 } | 45 } |
| 46 | 46 |
| 47 ChildThread::Options GetOptions() { |
| 48 ChildThread::Options options; |
| 49 |
| 50 #if defined(USE_OZONE) |
| 51 IPC::MessageFilter* message_filter = ui::OzonePlatform::GetInstance() |
| 52 ->GetGpuPlatformSupport() |
| 53 ->GetMessageFilter(); |
| 54 if (message_filter) |
| 55 options.startup_filters.push_back(message_filter); |
| 56 #endif |
| 57 |
| 58 return options; |
| 59 } |
| 60 |
| 47 } // namespace | 61 } // namespace |
| 48 | 62 |
| 49 GpuChildThread::GpuChildThread(GpuWatchdogThread* watchdog_thread, | 63 GpuChildThread::GpuChildThread(GpuWatchdogThread* watchdog_thread, |
| 50 bool dead_on_arrival, | 64 bool dead_on_arrival, |
| 51 const gpu::GPUInfo& gpu_info, | 65 const gpu::GPUInfo& gpu_info, |
| 52 const DeferredMessages& deferred_messages) | 66 const DeferredMessages& deferred_messages) |
| 53 : dead_on_arrival_(dead_on_arrival), | 67 : ChildThread(GetOptions()), |
| 68 dead_on_arrival_(dead_on_arrival), |
| 54 gpu_info_(gpu_info), | 69 gpu_info_(gpu_info), |
| 55 deferred_messages_(deferred_messages), | 70 deferred_messages_(deferred_messages), |
| 56 in_browser_process_(false) { | 71 in_browser_process_(false) { |
| 57 watchdog_thread_ = watchdog_thread; | 72 watchdog_thread_ = watchdog_thread; |
| 58 #if defined(OS_WIN) | 73 #if defined(OS_WIN) |
| 59 target_services_ = NULL; | 74 target_services_ = NULL; |
| 60 #endif | 75 #endif |
| 61 g_thread_safe_sender.Get() = thread_safe_sender(); | 76 g_thread_safe_sender.Get() = thread_safe_sender(); |
| 62 } | 77 } |
| 63 | 78 |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 // IPC messages before the sandbox has been enabled and all other necessary | 178 // IPC messages before the sandbox has been enabled and all other necessary |
| 164 // initialization has succeeded. | 179 // initialization has succeeded. |
| 165 gpu_channel_manager_.reset( | 180 gpu_channel_manager_.reset( |
| 166 new GpuChannelManager(GetRouter(), | 181 new GpuChannelManager(GetRouter(), |
| 167 watchdog_thread_.get(), | 182 watchdog_thread_.get(), |
| 168 ChildProcess::current()->io_message_loop_proxy(), | 183 ChildProcess::current()->io_message_loop_proxy(), |
| 169 ChildProcess::current()->GetShutDownEvent(), | 184 ChildProcess::current()->GetShutDownEvent(), |
| 170 channel())); | 185 channel())); |
| 171 | 186 |
| 172 #if defined(USE_OZONE) | 187 #if defined(USE_OZONE) |
| 173 ui::GpuPlatformSupport* gpu_platform_support = | 188 ui::OzonePlatform::GetInstance() |
| 174 ui::OzonePlatform::GetInstance()->GetGpuPlatformSupport(); | 189 ->GetGpuPlatformSupport() |
| 175 | 190 ->OnChannelEstablished(this); |
| 176 gpu_platform_support->OnChannelEstablished(this); | |
| 177 IPC::MessageFilter* message_filter = gpu_platform_support->GetMessageFilter(); | |
| 178 if (message_filter) | |
| 179 channel()->AddFilter(message_filter); | |
| 180 #endif | 191 #endif |
| 181 } | 192 } |
| 182 | 193 |
| 183 void GpuChildThread::StopWatchdog() { | 194 void GpuChildThread::StopWatchdog() { |
| 184 if (watchdog_thread_.get()) { | 195 if (watchdog_thread_.get()) { |
| 185 watchdog_thread_->Stop(); | 196 watchdog_thread_->Stop(); |
| 186 } | 197 } |
| 187 } | 198 } |
| 188 | 199 |
| 189 void GpuChildThread::OnCollectGraphicsInfo() { | 200 void GpuChildThread::OnCollectGraphicsInfo() { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 } | 284 } |
| 274 | 285 |
| 275 void GpuChildThread::OnGpuSwitched() { | 286 void GpuChildThread::OnGpuSwitched() { |
| 276 DVLOG(1) << "GPU: GPU has switched"; | 287 DVLOG(1) << "GPU: GPU has switched"; |
| 277 // Notify observers in the GPU process. | 288 // Notify observers in the GPU process. |
| 278 ui::GpuSwitchingManager::GetInstance()->NotifyGpuSwitched(); | 289 ui::GpuSwitchingManager::GetInstance()->NotifyGpuSwitched(); |
| 279 } | 290 } |
| 280 | 291 |
| 281 } // namespace content | 292 } // namespace content |
| 282 | 293 |
| OLD | NEW |