| Index: cc/scheduler/scheduler.cc
|
| diff --git a/cc/scheduler/scheduler.cc b/cc/scheduler/scheduler.cc
|
| index 14d5e69e6a0b6521be64398bb0755aca1ce5e559..8fdb97d3390de92d0e0e07beee07d78e99d46d76 100644
|
| --- a/cc/scheduler/scheduler.cc
|
| +++ b/cc/scheduler/scheduler.cc
|
| @@ -322,7 +322,11 @@ void Scheduler::BeginImplFrameWithDeadline(const BeginFrameArgs& args) {
|
| // Discard missed begin frames if they are too late.
|
| if (adjusted_args.type == BeginFrameArgs::MISSED &&
|
| now > adjusted_args.deadline) {
|
| - begin_frame_source_->DidFinishFrame(this, 0);
|
| + BeginFrameAck ack(
|
| + adjusted_args.source_id, adjusted_args.sequence_number,
|
| + state_machine_.last_frame_number_compositor_frame_was_fresh(), 0,
|
| + false);
|
| + begin_frame_source_->DidFinishFrame(this, ack);
|
| return;
|
| }
|
|
|
| @@ -332,7 +336,11 @@ void Scheduler::BeginImplFrameWithDeadline(const BeginFrameArgs& args) {
|
| OnBeginImplFrameDeadline();
|
| // We may not need begin frames any longer.
|
| if (!observing_begin_frame_source_) {
|
| - begin_frame_source_->DidFinishFrame(this, 0);
|
| + BeginFrameAck ack(
|
| + adjusted_args.source_id, adjusted_args.sequence_number,
|
| + state_machine_.last_frame_number_compositor_frame_was_fresh(), 0,
|
| + false);
|
| + begin_frame_source_->DidFinishFrame(this, ack);
|
| return;
|
| }
|
| }
|
| @@ -391,8 +399,13 @@ void Scheduler::BeginImplFrameWithDeadline(const BeginFrameArgs& args) {
|
| can_activate_before_deadline)) {
|
| TRACE_EVENT_INSTANT0("cc", "SkipBeginImplFrameToReduceLatency",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| - if (begin_frame_source_)
|
| - begin_frame_source_->DidFinishFrame(this, 0);
|
| + if (begin_frame_source_) {
|
| + BeginFrameAck ack(
|
| + adjusted_args.source_id, adjusted_args.sequence_number,
|
| + state_machine_.last_frame_number_compositor_frame_was_fresh(), 0,
|
| + false);
|
| + begin_frame_source_->DidFinishFrame(this, ack);
|
| + }
|
| return;
|
| }
|
|
|
| @@ -420,8 +433,14 @@ void Scheduler::FinishImplFrame() {
|
| ProcessScheduledActions();
|
|
|
| client_->DidFinishImplFrame();
|
| - if (begin_frame_source_)
|
| - begin_frame_source_->DidFinishFrame(this, 0);
|
| + if (begin_frame_source_) {
|
| + BeginFrameAck ack(
|
| + begin_main_frame_args_.source_id,
|
| + begin_main_frame_args_.sequence_number,
|
| + state_machine_.last_frame_number_compositor_frame_was_fresh(), 0,
|
| + state_machine_.did_submit_in_last_frame());
|
| + begin_frame_source_->DidFinishFrame(this, ack);
|
| + }
|
| begin_impl_frame_tracker_.Finish();
|
| }
|
|
|
| @@ -435,7 +454,7 @@ void Scheduler::BeginImplFrame(const BeginFrameArgs& args) {
|
| DCHECK(state_machine_.HasInitializedCompositorFrameSink());
|
|
|
| begin_impl_frame_tracker_.Start(args);
|
| - state_machine_.OnBeginImplFrame();
|
| + state_machine_.OnBeginImplFrame(args.source_id, args.sequence_number);
|
| devtools_instrumentation::DidBeginFrame(layer_tree_host_id_);
|
| compositor_timing_history_->WillBeginImplFrame(
|
| state_machine_.NewActiveTreeLikely());
|
| @@ -757,4 +776,16 @@ bool Scheduler::IsBeginMainFrameSentOrStarted() const {
|
| SchedulerStateMachine::BEGIN_MAIN_FRAME_STATE_STARTED);
|
| }
|
|
|
| +uint64_t Scheduler::CurrentBeginFrameSourceId() {
|
| + return begin_main_frame_args_.source_id;
|
| +}
|
| +
|
| +uint64_t Scheduler::CurrentBeginFrameNumber() {
|
| + return begin_main_frame_args_.sequence_number;
|
| +}
|
| +
|
| +uint64_t Scheduler::LatestConfirmedFrameForActiveTree() {
|
| + return state_machine_.last_frame_number_active_tree_was_fresh();
|
| +}
|
| +
|
| } // namespace cc
|
|
|