summaryrefslogtreecommitdiffstats
path: root/chromium/cc/trees/single_thread_proxy.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-13 15:05:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-14 10:33:47 +0000
commite684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch)
treed55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/cc/trees/single_thread_proxy.cc
parent2b94bfe47ccb6c08047959d1c26e392919550e86 (diff)
BASELINE: Update Chromium to 72.0.3626.110 and Ninja to 1.9.0
Change-Id: Ic57220b00ecc929a893c91f5cc552f5d3e99e922 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/cc/trees/single_thread_proxy.cc')
-rw-r--r--chromium/cc/trees/single_thread_proxy.cc51
1 files changed, 39 insertions, 12 deletions
diff --git a/chromium/cc/trees/single_thread_proxy.cc b/chromium/cc/trees/single_thread_proxy.cc
index 8e79bbbb4fb..2e3b7c613c1 100644
--- a/chromium/cc/trees/single_thread_proxy.cc
+++ b/chromium/cc/trees/single_thread_proxy.cc
@@ -9,6 +9,7 @@
#include "base/trace_event/trace_event.h"
#include "cc/base/devtools_instrumentation.h"
#include "cc/benchmarks/benchmark_instrumentation.h"
+#include "cc/input/browser_controls_offset_manager.h"
#include "cc/resources/ui_resource_manager.h"
#include "cc/scheduler/commit_earlyout_reason.h"
#include "cc/scheduler/compositor_timing_history.h"
@@ -46,10 +47,11 @@ SingleThreadProxy::SingleThreadProxy(LayerTreeHost* layer_tree_host,
inside_impl_frame_(false),
#endif
inside_draw_(false),
- defer_commits_(false),
+ defer_main_frame_update_(false),
animate_requested_(false),
commit_requested_(false),
inside_synchronous_composite_(false),
+ needs_impl_frame_(false),
layer_tree_frame_sink_creation_requested_(false),
layer_tree_frame_sink_lost_(true),
frame_sink_bound_weak_factory_(this),
@@ -258,24 +260,26 @@ void SingleThreadProxy::SetNextCommitWaitsForActivation() {
}
bool SingleThreadProxy::RequestedAnimatePending() {
- return animate_requested_ || commit_requested_;
+ return animate_requested_ || commit_requested_ || needs_impl_frame_;
}
-void SingleThreadProxy::SetDeferCommits(bool defer_commits) {
+void SingleThreadProxy::SetDeferMainFrameUpdate(bool defer_main_frame_update) {
DCHECK(task_runner_provider_->IsMainThread());
// Deferring commits only makes sense if there's a scheduler.
if (!scheduler_on_impl_thread_)
return;
- if (defer_commits_ == defer_commits)
+ if (defer_main_frame_update_ == defer_main_frame_update)
return;
- if (defer_commits)
- TRACE_EVENT_ASYNC_BEGIN0("cc", "SingleThreadProxy::SetDeferCommits", this);
+ if (defer_main_frame_update)
+ TRACE_EVENT_ASYNC_BEGIN0("cc", "SingleThreadProxy::SetDeferMainFrameUpdate",
+ this);
else
- TRACE_EVENT_ASYNC_END0("cc", "SingleThreadProxy::SetDeferCommits", this);
+ TRACE_EVENT_ASYNC_END0("cc", "SingleThreadProxy::SetDeferMainFrameUpdate",
+ this);
- defer_commits_ = defer_commits;
- scheduler_on_impl_thread_->SetDeferCommits(defer_commits);
+ defer_main_frame_update_ = defer_main_frame_update;
+ scheduler_on_impl_thread_->SetDeferMainFrameUpdate(defer_main_frame_update);
}
bool SingleThreadProxy::CommitRequested() const {
@@ -346,6 +350,7 @@ void SingleThreadProxy::SetNeedsOneBeginImplFrameOnImplThread() {
single_thread_client_->RequestScheduleComposite();
if (scheduler_on_impl_thread_)
scheduler_on_impl_thread_->SetNeedsOneBeginImplFrame();
+ needs_impl_frame_ = true;
}
void SingleThreadProxy::SetNeedsPrepareTilesOnImplThread() {
@@ -358,6 +363,7 @@ void SingleThreadProxy::SetNeedsCommitOnImplThread() {
single_thread_client_->RequestScheduleComposite();
if (scheduler_on_impl_thread_)
scheduler_on_impl_thread_->SetNeedsBeginMainFrame();
+ commit_requested_ = true;
}
void SingleThreadProxy::SetVideoNeedsBeginFrames(bool needs_begin_frames) {
@@ -528,6 +534,7 @@ void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time,
DCHECK(inside_impl_frame_);
#endif
animate_requested_ = false;
+ needs_impl_frame_ = false;
// Prevent new commits from being requested inside DoBeginMainFrame.
// Note: We do not want to prevent SetNeedsAnimate from requesting
// a commit here.
@@ -660,6 +667,14 @@ void SingleThreadProxy::SetRenderFrameObserver(
host_impl_->SetRenderFrameObserver(std::move(observer));
}
+void SingleThreadProxy::UpdateBrowserControlsState(
+ BrowserControlsState constraints,
+ BrowserControlsState current,
+ bool animate) {
+ host_impl_->browser_controls_manager()->UpdateBrowserControlsState(
+ constraints, current, animate);
+}
+
bool SingleThreadProxy::WillBeginImplFrame(const viz::BeginFrameArgs& args) {
DebugScopedSetImplThread impl(task_runner_provider_);
#if DCHECK_IS_ON()
@@ -685,12 +700,18 @@ void SingleThreadProxy::ScheduledActionSendBeginMainFrame(
<< "BeginMainFrame should only be sent inside a BeginImplFrame";
#endif
+ host_impl_->WillSendBeginMainFrame();
task_runner_provider_->MainThreadTaskRunner()->PostTask(
FROM_HERE, base::BindOnce(&SingleThreadProxy::BeginMainFrame,
weak_factory_.GetWeakPtr(), begin_frame_args));
host_impl_->DidSendBeginMainFrame();
}
+void SingleThreadProxy::FrameIntervalUpdated(base::TimeDelta interval) {
+ DebugScopedSetMainThread main(task_runner_provider_);
+ single_thread_client_->FrameIntervalUpdated(interval);
+}
+
void SingleThreadProxy::SendBeginMainFrameNotExpectedSoon() {
layer_tree_host_->BeginMainFrameNotExpectedSoon();
}
@@ -713,9 +734,10 @@ void SingleThreadProxy::BeginMainFrame(
}
commit_requested_ = false;
+ needs_impl_frame_ = false;
animate_requested_ = false;
- if (defer_commits_) {
+ if (defer_main_frame_update_) {
TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommit",
TRACE_EVENT_SCOPE_THREAD);
BeginMainFrameAbortedOnImplThread(
@@ -742,7 +764,7 @@ void SingleThreadProxy::BeginMainFrame(
// At this point the main frame may have deferred commits to avoid committing
// right now.
- if (defer_commits_ || begin_frame_args.animate_only) {
+ if (defer_main_frame_update_ || begin_frame_args.animate_only) {
TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommit_InsideBeginMainFrame",
TRACE_EVENT_SCOPE_THREAD);
BeginMainFrameAbortedOnImplThread(
@@ -775,7 +797,8 @@ 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(
+ false /* record_main_frame_metrics */);
}
void SingleThreadProxy::DoPainting() {
@@ -877,6 +900,10 @@ void SingleThreadProxy::DidNotProduceFrame(const viz::BeginFrameAck& ack) {
host_impl_->DidNotProduceFrame(ack);
}
+void SingleThreadProxy::WillNotReceiveBeginFrame() {
+ host_impl_->DidNotNeedBeginFrame();
+}
+
void SingleThreadProxy::DidReceiveCompositorFrameAck() {
layer_tree_host_->DidReceiveCompositorFrameAck();
}