Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1071)

Side by Side Diff: content/renderer/gpu/render_widget_compositor.cc

Issue 429393003: Send idle notifications to V8 after commit (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: idle_time_for_gc -> idle_time_in_ms Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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)) {
jamesr 2014/08/20 19:38:41 grab this value once and stash it in a bool, it ca
ernstm 2014/08/21 18:22:00 Done.
792 int idle_time_in_ms =
793 std::max(0L, (begin_main_frame_args_.frame_time +
794 begin_main_frame_args_.interval -
795 base::TimeTicks::HighResNow()).InMilliseconds());
jamesr 2014/08/20 19:38:41 i was under the impression BeginFrameArgs was buil
brianderson 2014/08/20 20:07:47 James is correct. Using HighResNow() here directly
ernstm 2014/08/21 18:22:00 Done.
796 if (idle_time_in_ms)
797 blink::mainThreadIsolate()->IdleNotification(idle_time_in_ms);
jamesr 2014/08/20 19:38:41 why the main thread isolate in particular? what ab
ernstm 2014/08/21 18:22:00 The goal is to reduce jank caused by GC on the mai
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698