| 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 |