OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/gpu/render_widget_compositor.h" | 5 #include "content/renderer/gpu/render_widget_compositor.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #if defined(OS_ANDROID) | 10 #if defined(OS_ANDROID) |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 #elif !defined(OS_MACOSX) | 300 #elif !defined(OS_MACOSX) |
301 if (cmd->HasSwitch(switches::kEnableOverlayScrollbars)) { | 301 if (cmd->HasSwitch(switches::kEnableOverlayScrollbars)) { |
302 settings.scrollbar_animator = cc::LayerTreeSettings::Thinning; | 302 settings.scrollbar_animator = cc::LayerTreeSettings::Thinning; |
303 } | 303 } |
304 if (cmd->HasSwitch(cc::switches::kEnablePinchVirtualViewport) || | 304 if (cmd->HasSwitch(cc::switches::kEnablePinchVirtualViewport) || |
305 cmd->HasSwitch(switches::kEnableOverlayScrollbars)) { | 305 cmd->HasSwitch(switches::kEnableOverlayScrollbars)) { |
306 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128); | 306 settings.solid_color_scrollbar_color = SkColorSetARGB(128, 128, 128, 128); |
307 } | 307 } |
308 #endif | 308 #endif |
309 | 309 |
310 if (!compositor->initialize(settings)) | 310 if (!compositor->Initialize(settings)) |
311 return scoped_ptr<RenderWidgetCompositor>(); | 311 return scoped_ptr<RenderWidgetCompositor>(); |
312 | 312 |
313 return compositor.Pass(); | 313 return compositor.Pass(); |
314 } | 314 } |
315 | 315 |
316 RenderWidgetCompositor::RenderWidgetCompositor(RenderWidget* widget, | 316 RenderWidgetCompositor::RenderWidgetCompositor(RenderWidget* widget, |
317 bool threaded) | 317 bool threaded) |
318 : threaded_(threaded), | 318 : threaded_(threaded), |
319 suppress_schedule_composite_(false), | 319 suppress_schedule_composite_(false), |
320 widget_(widget) { | 320 widget_(widget) { |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 return layer_tree_host_->root_layer(); | 406 return layer_tree_host_->root_layer(); |
407 } | 407 } |
408 | 408 |
409 bool RenderWidgetCompositor::ScheduleMicroBenchmark( | 409 bool RenderWidgetCompositor::ScheduleMicroBenchmark( |
410 const std::string& name, | 410 const std::string& name, |
411 scoped_ptr<base::Value> value, | 411 scoped_ptr<base::Value> value, |
412 const base::Callback<void(scoped_ptr<base::Value>)>& callback) { | 412 const base::Callback<void(scoped_ptr<base::Value>)>& callback) { |
413 return layer_tree_host_->ScheduleMicroBenchmark(name, value.Pass(), callback); | 413 return layer_tree_host_->ScheduleMicroBenchmark(name, value.Pass(), callback); |
414 } | 414 } |
415 | 415 |
416 bool RenderWidgetCompositor::initialize(cc::LayerTreeSettings settings) { | 416 bool RenderWidgetCompositor::Initialize(cc::LayerTreeSettings settings) { |
417 scoped_refptr<base::MessageLoopProxy> compositor_message_loop_proxy = | 417 scoped_refptr<base::MessageLoopProxy> compositor_message_loop_proxy = |
418 RenderThreadImpl::current()->compositor_message_loop_proxy(); | 418 RenderThreadImpl::current()->compositor_message_loop_proxy(); |
419 layer_tree_host_ = cc::LayerTreeHost::Create( | 419 if (compositor_message_loop_proxy.get()) { |
420 this, NULL, settings, compositor_message_loop_proxy); | 420 layer_tree_host_ = cc::LayerTreeHost::CreateThreaded( |
| 421 this, NULL, settings, compositor_message_loop_proxy); |
| 422 } else { |
| 423 layer_tree_host_ = cc::LayerTreeHost::CreateSingleThreaded( |
| 424 this, this, NULL, settings); |
| 425 } |
421 return layer_tree_host_; | 426 return layer_tree_host_; |
422 } | 427 } |
423 | 428 |
424 void RenderWidgetCompositor::setSurfaceReady() { | 429 void RenderWidgetCompositor::setSurfaceReady() { |
425 layer_tree_host_->SetLayerTreeHostClientReady(); | 430 layer_tree_host_->SetLayerTreeHostClientReady(); |
426 } | 431 } |
427 | 432 |
428 void RenderWidgetCompositor::setRootLayer(const WebKit::WebLayer& layer) { | 433 void RenderWidgetCompositor::setRootLayer(const WebKit::WebLayer& layer) { |
429 layer_tree_host_->SetRootLayer( | 434 layer_tree_host_->SetRootLayer( |
430 static_cast<const webkit::WebLayerImpl*>(&layer)->layer()); | 435 static_cast<const webkit::WebLayerImpl*>(&layer)->layer()); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 } | 636 } |
632 | 637 |
633 void RenderWidgetCompositor::DidCommitAndDrawFrame() { | 638 void RenderWidgetCompositor::DidCommitAndDrawFrame() { |
634 widget_->didCommitAndDrawCompositorFrame(); | 639 widget_->didCommitAndDrawCompositorFrame(); |
635 } | 640 } |
636 | 641 |
637 void RenderWidgetCompositor::DidCompleteSwapBuffers() { | 642 void RenderWidgetCompositor::DidCompleteSwapBuffers() { |
638 widget_->didCompleteSwapBuffers(); | 643 widget_->didCompleteSwapBuffers(); |
639 } | 644 } |
640 | 645 |
| 646 scoped_refptr<cc::ContextProvider> |
| 647 RenderWidgetCompositor::OffscreenContextProvider() { |
| 648 return RenderThreadImpl::current()->OffscreenCompositorContextProvider(); |
| 649 } |
| 650 |
641 void RenderWidgetCompositor::ScheduleComposite() { | 651 void RenderWidgetCompositor::ScheduleComposite() { |
642 if (!suppress_schedule_composite_) | 652 if (!suppress_schedule_composite_) |
643 widget_->scheduleComposite(); | 653 widget_->scheduleComposite(); |
644 } | 654 } |
645 | 655 |
646 scoped_refptr<cc::ContextProvider> | |
647 RenderWidgetCompositor::OffscreenContextProvider() { | |
648 return RenderThreadImpl::current()->OffscreenCompositorContextProvider(); | |
649 } | |
650 | |
651 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { | 656 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { |
652 cc::ContextProvider* provider = | 657 cc::ContextProvider* provider = |
653 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 658 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
654 provider->Context3d()->rateLimitOffscreenContextCHROMIUM(); | 659 provider->Context3d()->rateLimitOffscreenContextCHROMIUM(); |
655 } | 660 } |
656 | 661 |
657 } // namespace content | 662 } // namespace content |
OLD | NEW |