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/renderer/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <map> | 9 #include <map> |
10 #include <vector> | 10 #include <vector> |
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 new RendererBlinkPlatformImpl(renderer_scheduler_.get())); | 908 new RendererBlinkPlatformImpl(renderer_scheduler_.get())); |
909 blink::initialize(blink_platform_impl_.get()); | 909 blink::initialize(blink_platform_impl_.get()); |
910 | 910 |
911 v8::Isolate* isolate = blink::mainThreadIsolate(); | 911 v8::Isolate* isolate = blink::mainThreadIsolate(); |
912 | 912 |
913 isolate->SetCounterFunction(base::StatsTable::FindLocation); | 913 isolate->SetCounterFunction(base::StatsTable::FindLocation); |
914 isolate->SetCreateHistogramFunction(CreateHistogram); | 914 isolate->SetCreateHistogramFunction(CreateHistogram); |
915 isolate->SetAddHistogramSampleFunction(AddHistogramSample); | 915 isolate->SetAddHistogramSampleFunction(AddHistogramSample); |
916 | 916 |
917 main_thread_compositor_task_runner_ = | 917 main_thread_compositor_task_runner_ = |
918 renderer_scheduler()->CompositorTaskRunner(); | 918 renderer_scheduler_->CompositorTaskRunner(); |
919 | 919 |
920 main_input_callback_.Reset( | 920 main_input_callback_.Reset( |
921 base::Bind(base::IgnoreResult(&RenderThreadImpl::OnMessageReceived), | 921 base::Bind(base::IgnoreResult(&RenderThreadImpl::OnMessageReceived), |
922 base::Unretained(this))); | 922 base::Unretained(this))); |
923 | 923 |
924 bool enable = !command_line.HasSwitch(switches::kDisableThreadedCompositing); | 924 bool enable = !command_line.HasSwitch(switches::kDisableThreadedCompositing); |
925 if (enable) { | 925 if (enable) { |
926 #if defined(OS_ANDROID) | 926 #if defined(OS_ANDROID) |
927 if (SynchronousCompositorFactory* factory = | 927 if (SynchronousCompositorFactory* factory = |
928 SynchronousCompositorFactory::GetInstance()) | 928 SynchronousCompositorFactory::GetInstance()) |
(...skipping 24 matching lines...) Expand all Loading... |
953 if (!input_handler_manager_client) { | 953 if (!input_handler_manager_client) { |
954 scoped_refptr<InputEventFilter> compositor_input_event_filter( | 954 scoped_refptr<InputEventFilter> compositor_input_event_filter( |
955 new InputEventFilter(main_input_callback_.callback(), | 955 new InputEventFilter(main_input_callback_.callback(), |
956 main_thread_compositor_task_runner_, | 956 main_thread_compositor_task_runner_, |
957 compositor_message_loop_proxy_)); | 957 compositor_message_loop_proxy_)); |
958 input_handler_manager_client = compositor_input_event_filter.get(); | 958 input_handler_manager_client = compositor_input_event_filter.get(); |
959 input_event_filter_ = compositor_input_event_filter; | 959 input_event_filter_ = compositor_input_event_filter; |
960 } | 960 } |
961 input_handler_manager_.reset(new InputHandlerManager( | 961 input_handler_manager_.reset(new InputHandlerManager( |
962 compositor_message_loop_proxy_, input_handler_manager_client, | 962 compositor_message_loop_proxy_, input_handler_manager_client, |
963 renderer_scheduler())); | 963 renderer_scheduler_.get())); |
964 } | 964 } |
965 | 965 |
966 if (!input_event_filter_.get()) { | 966 if (!input_event_filter_.get()) { |
967 // Always provide an input event filter implementation to ensure consistent | 967 // Always provide an input event filter implementation to ensure consistent |
968 // input event scheduling and prioritization. | 968 // input event scheduling and prioritization. |
969 // TODO(jdduke): Merge InputEventFilter, InputHandlerManager and | 969 // TODO(jdduke): Merge InputEventFilter, InputHandlerManager and |
970 // MainThreadInputEventFilter, crbug.com/436057. | 970 // MainThreadInputEventFilter, crbug.com/436057. |
971 input_event_filter_ = new MainThreadInputEventFilter( | 971 input_event_filter_ = new MainThreadInputEventFilter( |
972 main_input_callback_.callback(), main_thread_compositor_task_runner_); | 972 main_input_callback_.callback(), main_thread_compositor_task_runner_); |
973 } | 973 } |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1268 void RenderThreadImpl::ReleaseCachedFonts() { | 1268 void RenderThreadImpl::ReleaseCachedFonts() { |
1269 Send(new ChildProcessHostMsg_ReleaseCachedFonts()); | 1269 Send(new ChildProcessHostMsg_ReleaseCachedFonts()); |
1270 } | 1270 } |
1271 | 1271 |
1272 #endif // OS_WIN | 1272 #endif // OS_WIN |
1273 | 1273 |
1274 ServiceRegistry* RenderThreadImpl::GetServiceRegistry() { | 1274 ServiceRegistry* RenderThreadImpl::GetServiceRegistry() { |
1275 return service_registry(); | 1275 return service_registry(); |
1276 } | 1276 } |
1277 | 1277 |
| 1278 bool RenderThreadImpl::IsImplSidePaintingEnabled() { |
| 1279 return is_impl_side_painting_enabled_; |
| 1280 } |
| 1281 |
| 1282 bool RenderThreadImpl::IsGpuRasterizationForced() { |
| 1283 return is_gpu_rasterization_forced_; |
| 1284 } |
| 1285 |
| 1286 bool RenderThreadImpl::IsGpuRasterizationEnabled() { |
| 1287 return is_gpu_rasterization_enabled_; |
| 1288 } |
| 1289 |
| 1290 bool RenderThreadImpl::IsLcdTextEnabled() { |
| 1291 return is_lcd_text_enabled_; |
| 1292 } |
| 1293 |
| 1294 bool RenderThreadImpl::IsDistanceFieldTextEnabled() { |
| 1295 return is_distance_field_text_enabled_; |
| 1296 } |
| 1297 |
| 1298 bool RenderThreadImpl::IsZeroCopyEnabled() { |
| 1299 return is_zero_copy_enabled_; |
| 1300 } |
| 1301 |
| 1302 bool RenderThreadImpl::IsOneCopyEnabled() { |
| 1303 return is_one_copy_enabled_; |
| 1304 } |
| 1305 |
| 1306 uint32 RenderThreadImpl::GetImageTextureTarget() { |
| 1307 return use_image_texture_target_; |
| 1308 } |
| 1309 scoped_refptr<base::SingleThreadTaskRunner> |
| 1310 RenderThreadImpl::GetCompositorMainThreadTaskRunner() { |
| 1311 return main_thread_compositor_task_runner_; |
| 1312 } |
| 1313 |
| 1314 scoped_refptr<base::SingleThreadTaskRunner> |
| 1315 RenderThreadImpl::GetCompositorImplThreadTaskRunner() { |
| 1316 return compositor_message_loop_proxy_; |
| 1317 } |
| 1318 |
| 1319 gpu::GpuMemoryBufferManager* RenderThreadImpl::GetGpuMemoryBufferManager() { |
| 1320 return gpu_memory_buffer_manager(); |
| 1321 } |
| 1322 |
| 1323 RendererScheduler* RenderThreadImpl::GetRendererScheduler() { |
| 1324 return renderer_scheduler_.get(); |
| 1325 } |
| 1326 |
| 1327 cc::ContextProvider* RenderThreadImpl::GetSharedMainThreadContextProvider() { |
| 1328 return SharedMainThreadContextProvider().get(); |
| 1329 } |
| 1330 |
| 1331 scoped_ptr<cc::BeginFrameSource> |
| 1332 RenderThreadImpl::CreateExternalBeginFrameSource(int routing_id) { |
| 1333 #if defined(OS_ANDROID) |
| 1334 if (SynchronousCompositorFactory* factory = |
| 1335 SynchronousCompositorFactory::GetInstance()) { |
| 1336 return factory->CreateExternalBeginFrameSource(routing_id); |
| 1337 } |
| 1338 #endif |
| 1339 return make_scoped_ptr(new CompositorExternalBeginFrameSource( |
| 1340 compositor_message_filter_.get(), sync_message_filter(), routing_id)); |
| 1341 } |
| 1342 |
1278 bool RenderThreadImpl::IsMainThread() { | 1343 bool RenderThreadImpl::IsMainThread() { |
1279 return !!current(); | 1344 return !!current(); |
1280 } | 1345 } |
1281 | 1346 |
1282 base::MessageLoop* RenderThreadImpl::GetMainLoop() { | 1347 base::MessageLoop* RenderThreadImpl::GetMainLoop() { |
1283 return message_loop(); | 1348 return message_loop(); |
1284 } | 1349 } |
1285 | 1350 |
1286 scoped_refptr<base::MessageLoopProxy> RenderThreadImpl::GetIOLoopProxy() { | 1351 scoped_refptr<base::MessageLoopProxy> RenderThreadImpl::GetIOLoopProxy() { |
1287 return io_message_loop_proxy_; | 1352 return io_message_loop_proxy_; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1383 | 1448 |
1384 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme, | 1449 void RenderThreadImpl::OnSetZoomLevelForCurrentURL(const std::string& scheme, |
1385 const std::string& host, | 1450 const std::string& host, |
1386 double zoom_level) { | 1451 double zoom_level) { |
1387 RenderViewZoomer zoomer(scheme, host, zoom_level); | 1452 RenderViewZoomer zoomer(scheme, host, zoom_level); |
1388 RenderView::ForEach(&zoomer); | 1453 RenderView::ForEach(&zoomer); |
1389 } | 1454 } |
1390 | 1455 |
1391 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { | 1456 void RenderThreadImpl::OnCreateNewView(const ViewMsg_New_Params& params) { |
1392 EnsureWebKitInitialized(); | 1457 EnsureWebKitInitialized(); |
| 1458 CompositorDependencies* compositor_deps = this; |
1393 // When bringing in render_view, also bring in webkit's glue and jsbindings. | 1459 // When bringing in render_view, also bring in webkit's glue and jsbindings. |
1394 RenderViewImpl::Create(params, false); | 1460 RenderViewImpl::Create(params, compositor_deps, false); |
1395 } | 1461 } |
1396 | 1462 |
1397 GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( | 1463 GpuChannelHost* RenderThreadImpl::EstablishGpuChannelSync( |
1398 CauseForGpuLaunch cause_for_gpu_launch) { | 1464 CauseForGpuLaunch cause_for_gpu_launch) { |
1399 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); | 1465 TRACE_EVENT0("gpu", "RenderThreadImpl::EstablishGpuChannelSync"); |
1400 | 1466 |
1401 if (gpu_channel_.get()) { | 1467 if (gpu_channel_.get()) { |
1402 // Do nothing if we already have a GPU channel or are already | 1468 // Do nothing if we already have a GPU channel or are already |
1403 // establishing one. | 1469 // establishing one. |
1404 if (!gpu_channel_->IsLost()) | 1470 if (!gpu_channel_->IsLost()) |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1641 hidden_widget_count_--; | 1707 hidden_widget_count_--; |
1642 | 1708 |
1643 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { | 1709 if (!GetContentClient()->renderer()->RunIdleHandlerWhenWidgetsHidden()) { |
1644 return; | 1710 return; |
1645 } | 1711 } |
1646 | 1712 |
1647 ScheduleIdleHandler(kLongIdleHandlerDelayMs); | 1713 ScheduleIdleHandler(kLongIdleHandlerDelayMs); |
1648 } | 1714 } |
1649 | 1715 |
1650 } // namespace content | 1716 } // namespace content |
OLD | NEW |