Index: services/ui/ws/frame_generator.cc |
diff --git a/services/ui/ws/frame_generator.cc b/services/ui/ws/frame_generator.cc |
index 30b17f3da99bf188dcddf76cbfd9508f4e87a110..d081b84c33c96ee3f2fb0d536406e5ab9f44c160 100644 |
--- a/services/ui/ws/frame_generator.cc |
+++ b/services/ui/ws/frame_generator.cc |
@@ -93,15 +93,16 @@ void FrameGenerator::SetExternalTilePriorityConstraints( |
const gfx::Transform& transform) {} |
void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) { |
+ // TODO(eseckler): Acknowledge BeginFrame if we don't submit CompositorFrame. |
if (!root_window_->visible()) |
return; |
+ 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)); |
SetNeedsBeginFrame(false); |
- last_begin_frame_args_ = begin_frame_args; |
} |
const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const { |
@@ -142,6 +143,9 @@ 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 = cc::BeginFrameAck( |
+ last_begin_frame_args_.source_id, last_begin_frame_args_.sequence_number, |
+ last_begin_frame_args_.sequence_number, 0, true); |
if (window_manager_surface_info_.is_valid()) { |
frame.metadata.referenced_surfaces.push_back( |