Chromium Code Reviews| Index: services/ui/ws/frame_generator.cc |
| diff --git a/services/ui/ws/frame_generator.cc b/services/ui/ws/frame_generator.cc |
| index 87f0f1426288ac97294c4ec076df3ff790c908b7..ada61585a6b9f821081b5c9e9edc486f9abaec01 100644 |
| --- a/services/ui/ws/frame_generator.cc |
| +++ b/services/ui/ws/frame_generator.cc |
| @@ -98,17 +98,24 @@ void FrameGenerator::SetExternalTilePriorityConstraints( |
| const gfx::Transform& transform) {} |
| void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) { |
| + current_begin_frame_ack_ = cc::BeginFrameAck( |
| + begin_frame_args.source_id, begin_frame_args.sequence_number, |
| + begin_frame_args.sequence_number, 0, false); |
|
msw
2017/03/21 17:38:57
I'm unfamiliar, is it safe to mark this same seque
Eric Seckler
2017/03/22 09:16:50
At the moment, we don't intend to use the latest_c
|
| if (!root_window_->visible() || |
| begin_frame_args.type == cc::BeginFrameArgs::MISSED) { |
| + begin_frame_source_->DidFinishFrame(this, current_begin_frame_ack_); |
| return; |
| } |
| + current_begin_frame_ack_.has_damage = true; |
| + last_begin_frame_args_ = begin_frame_args; |
| + |
| // TODO(fsamuel): We should add a trace for generating a top level frame. |
| cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); |
| - |
| compositor_frame_sink_->SubmitCompositorFrame(std::move(frame)); |
| + |
| + begin_frame_source_->DidFinishFrame(this, current_begin_frame_ack_); |
| SetNeedsBeginFrame(false); |
| - last_begin_frame_args_ = begin_frame_args; |
| } |
| const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const { |
| @@ -150,6 +157,7 @@ cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( |
| frame.render_pass_list.push_back(std::move(invert_pass)); |
| } |
| frame.metadata.device_scale_factor = device_scale_factor_; |
| + frame.metadata.begin_frame_ack = current_begin_frame_ack_; |
| if (window_manager_surface_info_.is_valid()) { |
| frame.metadata.referenced_surfaces.push_back( |