Chromium Code Reviews| 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 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 #include "content/common/content_switches_internal.h" | 31 #include "content/common/content_switches_internal.h" |
| 32 #include "content/common/gpu/client/context_provider_command_buffer.h" | 32 #include "content/common/gpu/client/context_provider_command_buffer.h" |
| 33 #include "content/public/common/content_switches.h" | 33 #include "content/public/common/content_switches.h" |
| 34 #include "content/renderer/compositor_bindings/web_layer_impl.h" | 34 #include "content/renderer/compositor_bindings/web_layer_impl.h" |
| 35 #include "content/renderer/input/input_handler_manager.h" | 35 #include "content/renderer/input/input_handler_manager.h" |
| 36 #include "content/renderer/render_thread_impl.h" | 36 #include "content/renderer/render_thread_impl.h" |
| 37 #include "gpu/command_buffer/client/gles2_interface.h" | 37 #include "gpu/command_buffer/client/gles2_interface.h" |
| 38 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h" | 38 #include "third_party/WebKit/public/platform/WebCompositeAndReadbackAsyncCallbac k.h" |
| 39 #include "third_party/WebKit/public/platform/WebSelectionBound.h" | 39 #include "third_party/WebKit/public/platform/WebSelectionBound.h" |
| 40 #include "third_party/WebKit/public/platform/WebSize.h" | 40 #include "third_party/WebKit/public/platform/WebSize.h" |
| 41 #include "third_party/WebKit/public/web/WebKit.h" | |
| 41 #include "third_party/WebKit/public/web/WebWidget.h" | 42 #include "third_party/WebKit/public/web/WebWidget.h" |
| 42 #include "ui/gfx/frame_time.h" | 43 #include "ui/gfx/frame_time.h" |
| 43 #include "ui/gl/gl_switches.h" | 44 #include "ui/gl/gl_switches.h" |
| 44 #include "ui/native_theme/native_theme_switches.h" | 45 #include "ui/native_theme/native_theme_switches.h" |
| 45 | 46 |
| 46 #if defined(OS_ANDROID) | 47 #if defined(OS_ANDROID) |
| 47 #include "content/renderer/android/synchronous_compositor_factory.h" | 48 #include "content/renderer/android/synchronous_compositor_factory.h" |
| 48 #include "ui/gfx/android/device_display_info.h" | 49 #include "ui/gfx/android/device_display_info.h" |
| 49 #endif | 50 #endif |
| 50 | 51 |
| (...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 750 void RenderWidgetCompositor::WillBeginMainFrame(int frame_id) { | 751 void RenderWidgetCompositor::WillBeginMainFrame(int frame_id) { |
| 751 widget_->InstrumentWillBeginFrame(frame_id); | 752 widget_->InstrumentWillBeginFrame(frame_id); |
| 752 widget_->willBeginCompositorFrame(); | 753 widget_->willBeginCompositorFrame(); |
| 753 } | 754 } |
| 754 | 755 |
| 755 void RenderWidgetCompositor::DidBeginMainFrame() { | 756 void RenderWidgetCompositor::DidBeginMainFrame() { |
| 756 widget_->InstrumentDidBeginFrame(); | 757 widget_->InstrumentDidBeginFrame(); |
| 757 } | 758 } |
| 758 | 759 |
| 759 void RenderWidgetCompositor::BeginMainFrame(const cc::BeginFrameArgs& args) { | 760 void RenderWidgetCompositor::BeginMainFrame(const cc::BeginFrameArgs& args) { |
| 761 begin_main_frame_args_ = args; | |
| 760 double frame_time = (args.frame_time - base::TimeTicks()).InSecondsF(); | 762 double frame_time = (args.frame_time - base::TimeTicks()).InSecondsF(); |
| 761 WebBeginFrameArgs web_begin_frame_args = WebBeginFrameArgs(frame_time); | 763 WebBeginFrameArgs web_begin_frame_args = WebBeginFrameArgs(frame_time); |
| 762 widget_->webwidget()->beginFrame(web_begin_frame_args); | 764 widget_->webwidget()->beginFrame(web_begin_frame_args); |
| 763 } | 765 } |
| 764 | 766 |
| 765 void RenderWidgetCompositor::Layout() { | 767 void RenderWidgetCompositor::Layout() { |
| 766 widget_->webwidget()->layout(); | 768 widget_->webwidget()->layout(); |
| 767 } | 769 } |
| 768 | 770 |
| 769 void RenderWidgetCompositor::ApplyScrollAndScale( | 771 void RenderWidgetCompositor::ApplyScrollAndScale( |
| 770 const gfx::Vector2d& scroll_delta, | 772 const gfx::Vector2d& scroll_delta, |
| 771 float page_scale) { | 773 float page_scale) { |
| 772 widget_->webwidget()->applyScrollAndScale(scroll_delta, page_scale); | 774 widget_->webwidget()->applyScrollAndScale(scroll_delta, page_scale); |
| 773 } | 775 } |
| 774 | 776 |
| 775 scoped_ptr<cc::OutputSurface> RenderWidgetCompositor::CreateOutputSurface( | 777 scoped_ptr<cc::OutputSurface> RenderWidgetCompositor::CreateOutputSurface( |
| 776 bool fallback) { | 778 bool fallback) { |
| 777 return widget_->CreateOutputSurface(fallback); | 779 return widget_->CreateOutputSurface(fallback); |
| 778 } | 780 } |
| 779 | 781 |
| 780 void RenderWidgetCompositor::DidInitializeOutputSurface() { | 782 void RenderWidgetCompositor::DidInitializeOutputSurface() { |
| 781 } | 783 } |
| 782 | 784 |
| 783 void RenderWidgetCompositor::WillCommit() { | 785 void RenderWidgetCompositor::WillCommit() { |
| 784 widget_->InstrumentWillComposite(); | 786 widget_->InstrumentWillComposite(); |
| 785 } | 787 } |
| 786 | 788 |
| 787 void RenderWidgetCompositor::DidCommit() { | 789 void RenderWidgetCompositor::DidCommit() { |
| 790 CommandLine* cmd = CommandLine::ForCurrentProcess(); | |
| 791 if (cmd->HasSwitch(switches::kSendV8IdleNotificationAfterCommit)) { | |
| 792 int idle_time_for_gc = | |
|
Hannes Payer (out of office)
2014/08/19 07:34:36
Let's rename that variable to idle_time_in_ms. The
ernstm
2014/08/19 22:09:24
Done.
| |
| 793 std::max(0L, (begin_main_frame_args_.frame_time + | |
| 794 begin_main_frame_args_.interval - | |
| 795 base::TimeTicks::HighResNow()).InMilliseconds()); | |
| 796 if (idle_time_for_gc) | |
| 797 blink::mainThreadIsolate()->IdleNotification(idle_time_for_gc); | |
| 798 } | |
| 799 | |
| 788 widget_->DidCommitCompositorFrame(); | 800 widget_->DidCommitCompositorFrame(); |
| 789 widget_->didBecomeReadyForAdditionalInput(); | 801 widget_->didBecomeReadyForAdditionalInput(); |
| 790 } | 802 } |
| 791 | 803 |
| 792 void RenderWidgetCompositor::DidCommitAndDrawFrame() { | 804 void RenderWidgetCompositor::DidCommitAndDrawFrame() { |
| 793 widget_->didCommitAndDrawCompositorFrame(); | 805 widget_->didCommitAndDrawCompositorFrame(); |
| 794 } | 806 } |
| 795 | 807 |
| 796 void RenderWidgetCompositor::DidCompleteSwapBuffers() { | 808 void RenderWidgetCompositor::DidCompleteSwapBuffers() { |
| 797 widget_->didCompleteSwapBuffers(); | 809 widget_->didCompleteSwapBuffers(); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 816 widget_->OnSwapBuffersAborted(); | 828 widget_->OnSwapBuffersAborted(); |
| 817 } | 829 } |
| 818 | 830 |
| 819 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { | 831 void RenderWidgetCompositor::RateLimitSharedMainThreadContext() { |
| 820 cc::ContextProvider* provider = | 832 cc::ContextProvider* provider = |
| 821 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 833 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
| 822 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM(); | 834 provider->ContextGL()->RateLimitOffscreenContextCHROMIUM(); |
| 823 } | 835 } |
| 824 | 836 |
| 825 } // namespace content | 837 } // namespace content |
| OLD | NEW |