diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-01-31 16:33:43 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-02-06 16:33:22 +0000 |
commit | da51f56cc21233c2d30f0fe0d171727c3102b2e0 (patch) | |
tree | 4e579ab70ce4b19bee7984237f3ce05a96d59d83 /chromium/cc/trees/single_thread_proxy.cc | |
parent | c8c2d1901aec01e934adf561a9fdf0cc776cdef8 (diff) |
BASELINE: Update Chromium to 65.0.3525.40
Also imports missing submodules
Change-Id: I36901b7c6a325cda3d2c10cedb2186c25af3b79b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/cc/trees/single_thread_proxy.cc')
-rw-r--r-- | chromium/cc/trees/single_thread_proxy.cc | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/chromium/cc/trees/single_thread_proxy.cc b/chromium/cc/trees/single_thread_proxy.cc index f5c49b175ee..d8dfc289cdd 100644 --- a/chromium/cc/trees/single_thread_proxy.cc +++ b/chromium/cc/trees/single_thread_proxy.cc @@ -13,6 +13,7 @@ #include "cc/scheduler/commit_earlyout_reason.h" #include "cc/scheduler/compositor_timing_history.h" #include "cc/scheduler/scheduler.h" +#include "cc/trees/latency_info_swap_promise.h" #include "cc/trees/layer_tree_frame_sink.h" #include "cc/trees/layer_tree_host.h" #include "cc/trees/layer_tree_host_common.h" @@ -465,6 +466,15 @@ void SingleThreadProxy::NotifyImageDecodeRequestFinished() { SetNeedsCommitOnImplThread(); } +void SingleThreadProxy::DidPresentCompositorFrameOnImplThread( + const std::vector<int>& source_frames, + base::TimeTicks time, + base::TimeDelta refresh, + uint32_t flags) { + layer_tree_host_->DidPresentCompositorFrame(source_frames, time, refresh, + flags); +} + void SingleThreadProxy::RequestBeginMainFrameNotExpected(bool new_state) { if (scheduler_on_impl_thread_) { scheduler_on_impl_thread_->SetMainThreadWantsBeginMainFrameNotExpected( @@ -618,6 +628,12 @@ bool SingleThreadProxy::MainFrameWillHappenForTesting() { return scheduler_on_impl_thread_->MainFrameForTestingWillHappen(); } +void SingleThreadProxy::ClearHistoryOnNavigation() { + DCHECK(task_runner_provider_->IsImplThread()); + if (scheduler_on_impl_thread_) + scheduler_on_impl_thread_->ClearHistoryOnNavigation(); +} + void SingleThreadProxy::WillBeginImplFrame(const viz::BeginFrameArgs& args) { DebugScopedSetImplThread impl(task_runner_provider_); #if DCHECK_IS_ON() @@ -660,6 +676,11 @@ void SingleThreadProxy::ScheduledActionBeginMainFrameNotExpectedUntil( void SingleThreadProxy::BeginMainFrame( const viz::BeginFrameArgs& begin_frame_args) { + // This checker assumes NotifyReadyToCommit in this stack causes a synchronous + // commit. + ScopedAbortRemainingSwapPromises swap_promise_checker( + layer_tree_host_->GetSwapPromiseManager()); + if (scheduler_on_impl_thread_) { scheduler_on_impl_thread_->NotifyBeginMainFrameStarted( base::TimeTicks::Now()); @@ -676,11 +697,6 @@ void SingleThreadProxy::BeginMainFrame( return; } - // This checker assumes NotifyReadyToCommit in this stack causes a synchronous - // commit. - ScopedAbortRemainingSwapPromises swap_promise_checker( - layer_tree_host_->GetSwapPromiseManager()); - if (!layer_tree_host_->IsVisible()) { TRACE_EVENT_INSTANT0("cc", "EarlyOut_NotVisible", TRACE_EVENT_SCOPE_THREAD); BeginMainFrameAbortedOnImplThread( @@ -700,7 +716,7 @@ void SingleThreadProxy::BeginMainFrame( // At this point the main frame may have deferred commits to avoid committing // right now. - if (defer_commits_) { + if (defer_commits_ || begin_frame_args.animate_only) { TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommit_InsideBeginMainFrame", TRACE_EVENT_SCOPE_THREAD); BeginMainFrameAbortedOnImplThread( @@ -709,6 +725,15 @@ void SingleThreadProxy::BeginMainFrame( return; } + // Queue the LATENCY_BEGIN_FRAME_UI_MAIN_COMPONENT swap promise only once we + // know we will commit since QueueSwapPromise itself requests a commit. + ui::LatencyInfo new_latency_info(ui::SourceEventType::FRAME); + new_latency_info.AddLatencyNumberWithTimestamp( + ui::LATENCY_BEGIN_FRAME_UI_MAIN_COMPONENT, 0, 0, + begin_frame_args.frame_time, 1); + layer_tree_host_->QueueSwapPromise( + std::make_unique<LatencyInfoSwapPromise>(new_latency_info)); + DoPainting(); } @@ -725,7 +750,10 @@ void SingleThreadProxy::DoBeginMainFrame( layer_tree_host_->WillBeginMainFrame(); layer_tree_host_->BeginMainFrame(begin_frame_args); layer_tree_host_->AnimateLayers(begin_frame_args.frame_time); - layer_tree_host_->RequestMainFrameUpdate(); + layer_tree_host_->RequestMainFrameUpdate( + begin_frame_args.animate_only + ? LayerTreeHost::VisualStateUpdate::kPrePaint + : LayerTreeHost::VisualStateUpdate::kAll); } void SingleThreadProxy::DoPainting() { |