diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-12 14:07:37 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-17 10:29:26 +0000 |
commit | ec02ee4181c49b61fce1c8fb99292dbb8139cc90 (patch) | |
tree | 25cde714b2b71eb639d1cd53f5a22e9ba76e14ef /chromium/cc/trees/single_thread_proxy.cc | |
parent | bb09965444b5bb20b096a291445170876225268d (diff) |
BASELINE: Update Chromium to 59.0.3071.134
Change-Id: Id02ef6fb2204c5fd21668a1c3e6911c83b17585a
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 | 46 |
1 files changed, 37 insertions, 9 deletions
diff --git a/chromium/cc/trees/single_thread_proxy.cc b/chromium/cc/trees/single_thread_proxy.cc index 33ed54ae3a9..07b5afa607a 100644 --- a/chromium/cc/trees/single_thread_proxy.cc +++ b/chromium/cc/trees/single_thread_proxy.cc @@ -8,8 +8,8 @@ #include "base/memory/ptr_util.h" #include "base/profiler/scoped_tracker.h" #include "base/trace_event/trace_event.h" -#include "cc/debug/benchmark_instrumentation.h" -#include "cc/debug/devtools_instrumentation.h" +#include "cc/base/devtools_instrumentation.h" +#include "cc/benchmarks/benchmark_instrumentation.h" #include "cc/output/compositor_frame_sink.h" #include "cc/output/context_provider.h" #include "cc/quads/draw_quad.h" @@ -204,6 +204,12 @@ void SingleThreadProxy::DoCommit() { if (scheduler_on_impl_thread_) scheduler_on_impl_thread_->DidCommit(); + // Issue decode callbacks. + auto completed_decode_callbacks = + layer_tree_host_impl_->TakeCompletedImageDecodeCallbacks(); + for (auto& callback : completed_decode_callbacks) + callback.Run(); + layer_tree_host_impl_->CommitComplete(); // Commit goes directly to the active tree, but we need to synchronously @@ -449,8 +455,9 @@ void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) { } BeginFrameArgs begin_frame_args(BeginFrameArgs::Create( - BEGINFRAME_FROM_HERE, 0, 1, frame_begin_time, base::TimeTicks(), - BeginFrameArgs::DefaultInterval(), BeginFrameArgs::NORMAL)); + BEGINFRAME_FROM_HERE, BeginFrameArgs::kManualSourceId, 1, + frame_begin_time, base::TimeTicks(), BeginFrameArgs::DefaultInterval(), + BeginFrameArgs::NORMAL)); // Start the impl frame. { @@ -464,6 +471,7 @@ void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) { DCHECK(inside_impl_frame_); #endif DoBeginMainFrame(begin_frame_args); + DoPainting(); DoCommit(); DCHECK_EQ( @@ -485,6 +493,9 @@ void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) { layer_tree_host_impl_->Animate(); LayerTreeHostImpl::FrameData frame; + frame.begin_frame_ack = BeginFrameAck( + begin_frame_args.source_id, begin_frame_args.sequence_number, + begin_frame_args.sequence_number, true); DoComposite(&frame); // DoComposite could abort, but because this is a synchronous composite @@ -604,8 +615,8 @@ void SingleThreadProxy::ScheduledActionSendBeginMainFrame( #endif task_runner_provider_->MainThreadTaskRunner()->PostTask( - FROM_HERE, base::Bind(&SingleThreadProxy::BeginMainFrame, - weak_factory_.GetWeakPtr(), begin_frame_args)); + FROM_HERE, base::BindOnce(&SingleThreadProxy::BeginMainFrame, + weak_factory_.GetWeakPtr(), begin_frame_args)); layer_tree_host_impl_->DidSendBeginMainFrame(); } @@ -648,6 +659,22 @@ void SingleThreadProxy::BeginMainFrame(const BeginFrameArgs& begin_frame_args) { commit_requested_ = true; DoBeginMainFrame(begin_frame_args); + + // New commits requested inside UpdateLayers should be respected. + commit_requested_ = false; + + // At this point the main frame may have deferred commits to avoid committing + // right now. + if (defer_commits_) { + TRACE_EVENT_INSTANT0("cc", "EarlyOut_DeferCommit_InsideBeginMainFrame", + TRACE_EVENT_SCOPE_THREAD); + BeginMainFrameAbortedOnImplThread( + CommitEarlyOutReason::ABORTED_DEFERRED_COMMIT); + layer_tree_host_->DidBeginMainFrame(); + return; + } + + DoPainting(); } void SingleThreadProxy::DoBeginMainFrame( @@ -664,10 +691,9 @@ void SingleThreadProxy::DoBeginMainFrame( layer_tree_host_->BeginMainFrame(begin_frame_args); layer_tree_host_->AnimateLayers(begin_frame_args.frame_time); layer_tree_host_->RequestMainFrameUpdate(); +} - // New commits requested inside UpdateLayers should be respected. - commit_requested_ = false; - +void SingleThreadProxy::DoPainting() { layer_tree_host_->UpdateLayers(); // TODO(enne): SingleThreadProxy does not support cancelling commits yet, @@ -692,6 +718,8 @@ void SingleThreadProxy::BeginMainFrameAbortedOnImplThread( DrawResult SingleThreadProxy::ScheduledActionDrawIfPossible() { DebugScopedSetImplThread impl(task_runner_provider_); LayerTreeHostImpl::FrameData frame; + frame.begin_frame_ack = + scheduler_on_impl_thread_->CurrentBeginFrameAckForActiveTree(); return DoComposite(&frame); } |