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/browser/gpu/gpu_process_host_ui_shim.h" | 5 #include "content/browser/gpu/gpu_process_host_ui_shim.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
11 #include "base/debug/trace_event.h" | 11 #include "base/debug/trace_event.h" |
12 #include "base/id_map.h" | 12 #include "base/id_map.h" |
13 #include "base/lazy_instance.h" | 13 #include "base/lazy_instance.h" |
14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
15 #include "content/browser/compositor/gpu_process_transport_factory.h" | 15 #include "content/browser/compositor/gpu_process_transport_factory.h" |
16 #include "content/browser/gpu/compositor_util.h" | 16 #include "content/browser/gpu/compositor_util.h" |
17 #include "content/browser/gpu/gpu_data_manager_impl.h" | 17 #include "content/browser/gpu/gpu_data_manager_impl.h" |
18 #include "content/browser/gpu/gpu_process_host.h" | 18 #include "content/browser/gpu/gpu_process_host.h" |
19 #include "content/browser/gpu/gpu_surface_tracker.h" | 19 #include "content/browser/gpu/gpu_surface_tracker.h" |
20 #include "content/browser/renderer_host/render_process_host_impl.h" | 20 #include "content/browser/renderer_host/render_process_host_impl.h" |
21 #include "content/browser/renderer_host/render_view_host_impl.h" | 21 #include "content/browser/renderer_host/render_view_host_impl.h" |
22 #include "content/browser/renderer_host/render_widget_helper.h" | 22 #include "content/browser/renderer_host/render_widget_helper.h" |
23 #include "content/browser/renderer_host/render_widget_host_view_base.h" | 23 #include "content/browser/renderer_host/render_widget_host_view_base.h" |
24 #include "content/common/gpu/gpu_messages.h" | 24 #include "content/common/gpu/gpu_messages.h" |
25 #include "content/public/browser/browser_thread.h" | 25 #include "content/public/browser/browser_thread.h" |
| 26 #include "content/public/browser/render_widget_host_iterator.h" |
26 | 27 |
27 #if defined(OS_MACOSX) | 28 #if defined(OS_MACOSX) |
28 #include "ui/accelerated_widget_mac/accelerated_widget_mac.h" | 29 #include "ui/accelerated_widget_mac/accelerated_widget_mac.h" |
29 #endif | 30 #endif |
30 | 31 |
31 #if defined(USE_OZONE) | 32 #if defined(USE_OZONE) |
32 #include "ui/ozone/public/gpu_platform_support_host.h" | 33 #include "ui/ozone/public/gpu_platform_support_host.h" |
33 #include "ui/ozone/public/ozone_platform.h" | 34 #include "ui/ozone/public/ozone_platform.h" |
34 #endif | 35 #endif |
35 | 36 |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceInitialized, | 224 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceInitialized, |
224 OnAcceleratedSurfaceInitialized) | 225 OnAcceleratedSurfaceInitialized) |
225 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, | 226 IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, |
226 OnAcceleratedSurfaceBuffersSwapped) | 227 OnAcceleratedSurfaceBuffersSwapped) |
227 IPC_MESSAGE_HANDLER(GpuHostMsg_GraphicsInfoCollected, | 228 IPC_MESSAGE_HANDLER(GpuHostMsg_GraphicsInfoCollected, |
228 OnGraphicsInfoCollected) | 229 OnGraphicsInfoCollected) |
229 IPC_MESSAGE_HANDLER(GpuHostMsg_VideoMemoryUsageStats, | 230 IPC_MESSAGE_HANDLER(GpuHostMsg_VideoMemoryUsageStats, |
230 OnVideoMemoryUsageStatsReceived); | 231 OnVideoMemoryUsageStatsReceived); |
231 IPC_MESSAGE_HANDLER(GpuHostMsg_ResourcesRelinquished, | 232 IPC_MESSAGE_HANDLER(GpuHostMsg_ResourcesRelinquished, |
232 OnResourcesRelinquished) | 233 OnResourcesRelinquished) |
| 234 IPC_MESSAGE_HANDLER(GpuHostMsg_AddSubscription, OnAddSubscription); |
| 235 IPC_MESSAGE_HANDLER(GpuHostMsg_RemoveSubscription, OnRemoveSubscription); |
233 | 236 |
234 IPC_MESSAGE_UNHANDLED_ERROR() | 237 IPC_MESSAGE_UNHANDLED_ERROR() |
235 IPC_END_MESSAGE_MAP() | 238 IPC_END_MESSAGE_MAP() |
236 | 239 |
237 return true; | 240 return true; |
238 } | 241 } |
239 | 242 |
240 void GpuProcessHostUIShim::OnLogMessage( | 243 void GpuProcessHostUIShim::OnLogMessage( |
241 int level, | 244 int level, |
242 const std::string& header, | 245 const std::string& header, |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 GpuDataManagerImpl::GetInstance()->UpdateVideoMemoryUsageStats( | 302 GpuDataManagerImpl::GetInstance()->UpdateVideoMemoryUsageStats( |
300 video_memory_usage_stats); | 303 video_memory_usage_stats); |
301 } | 304 } |
302 | 305 |
303 void GpuProcessHostUIShim::OnResourcesRelinquished() { | 306 void GpuProcessHostUIShim::OnResourcesRelinquished() { |
304 if (!relinquish_callback_.is_null()) { | 307 if (!relinquish_callback_.is_null()) { |
305 base::ResetAndReturn(&relinquish_callback_).Run(); | 308 base::ResetAndReturn(&relinquish_callback_).Run(); |
306 } | 309 } |
307 } | 310 } |
308 | 311 |
| 312 void GpuProcessHostUIShim::OnAddSubscription( |
| 313 int32 process_id, unsigned int target) { |
| 314 scoped_ptr<RenderWidgetHostIterator> rwhi_iterator = |
| 315 RenderWidgetHostImpl::GetRenderWidgetHosts(); |
| 316 while (RenderWidgetHost* widget = rwhi_iterator->GetNextHost()) { |
| 317 // Count only RenderWidgetHosts in this process. |
| 318 if (widget->GetProcess()->GetID() == process_id) { |
| 319 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); |
| 320 rwhi->OnAddSubscription(target); |
| 321 } |
| 322 } |
| 323 } |
| 324 |
| 325 void GpuProcessHostUIShim::OnRemoveSubscription( |
| 326 int32 process_id, unsigned int target) { |
| 327 scoped_ptr<RenderWidgetHostIterator> rwhi_iterator = |
| 328 RenderWidgetHostImpl::GetRenderWidgetHosts(); |
| 329 while (RenderWidgetHost* widget = rwhi_iterator->GetNextHost()) { |
| 330 // Count only RenderWidgetHosts in this process. |
| 331 if (widget->GetProcess()->GetID() == process_id) { |
| 332 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); |
| 333 rwhi->OnRemoveSubscription(target); |
| 334 } |
| 335 } |
| 336 } |
| 337 |
309 } // namespace content | 338 } // namespace content |
OLD | NEW |