summaryrefslogtreecommitdiffstats
path: root/chromium/cc/trees/single_thread_proxy.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-01-31 16:33:43 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-02-06 16:33:22 +0000
commitda51f56cc21233c2d30f0fe0d171727c3102b2e0 (patch)
tree4e579ab70ce4b19bee7984237f3ce05a96d59d83 /chromium/cc/trees/single_thread_proxy.cc
parentc8c2d1901aec01e934adf561a9fdf0cc776cdef8 (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.cc42
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() {