Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(357)

Side by Side Diff: services/ui/ws/frame_generator.cc

Issue 2527283003: cc: Introduce BeginFrame sequence numbers and acknowledgements.
Patch Set: . Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/ui/ws/frame_generator.h" 5 #include "services/ui/ws/frame_generator.h"
6 6
7 #include "base/containers/adapters.h" 7 #include "base/containers/adapters.h"
8 #include "cc/output/compositor_frame.h" 8 #include "cc/output/compositor_frame.h"
9 #include "cc/quads/render_pass.h" 9 #include "cc/quads/render_pass.h"
10 #include "cc/quads/render_pass_draw_quad.h" 10 #include "cc/quads/render_pass_draw_quad.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 // Move the existing reference to list of references to remove after we submit 87 // Move the existing reference to list of references to remove after we submit
88 // the next CompositorFrame. Update local reference cache to be the new 88 // the next CompositorFrame. Update local reference cache to be the new
89 // reference. If this is the display root surface then removing this reference 89 // reference. If this is the display root surface then removing this reference
90 // will recursively remove any references it held. 90 // will recursively remove any references it held.
91 dead_references_.push_back(ref); 91 dead_references_.push_back(ref);
92 ref.child_id = surface_id; 92 ref.child_id = surface_id;
93 } 93 }
94 94
95 void FrameGenerator::DidReceiveCompositorFrameAck() {} 95 void FrameGenerator::DidReceiveCompositorFrameAck() {}
96 96
97 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_arags) { 97 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) {
98 if (!root_window_->visible()) 98 if (!root_window_->visible())
99 return; 99 return;
100 100
101 // TODO(fsamuel): We should add a trace for generating a top level frame. 101 // TODO(fsamuel): We should add a trace for generating a top level frame.
102 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); 102 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds()));
103 frame.metadata.begin_frame_number = begin_frame_args.sequence_number;
104 frame.metadata.oldest_incorporated_frame = begin_frame_args.sequence_number;
103 105
104 if (compositor_frame_sink_) { 106 if (compositor_frame_sink_) {
105 gfx::Size frame_size = last_submitted_frame_size_; 107 gfx::Size frame_size = last_submitted_frame_size_;
106 if (!frame.render_pass_list.empty()) 108 if (!frame.render_pass_list.empty())
107 frame_size = frame.render_pass_list[0]->output_rect.size(); 109 frame_size = frame.render_pass_list[0]->output_rect.size();
108 if (!local_frame_id_.is_valid() || frame_size != last_submitted_frame_size_) 110 if (!local_frame_id_.is_valid() || frame_size != last_submitted_frame_size_)
109 local_frame_id_ = id_allocator_.GenerateId(); 111 local_frame_id_ = id_allocator_.GenerateId();
110 compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_, 112 compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_,
111 std::move(frame)); 113 std::move(frame));
112 last_submitted_frame_size_ = frame_size; 114 last_submitted_frame_size_ = frame_size;
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 cc::SurfaceId underlay_surface_id = 360 cc::SurfaceId underlay_surface_id =
359 window->compositor_frame_sink_manager()->GetLatestSurfaceId( 361 window->compositor_frame_sink_manager()->GetLatestSurfaceId(
360 mojom::CompositorFrameSinkType::UNDERLAY); 362 mojom::CompositorFrameSinkType::UNDERLAY);
361 if (underlay_surface_id.is_valid()) 363 if (underlay_surface_id.is_valid())
362 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id()); 364 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id());
363 } 365 }
364 366
365 } // namespace ws 367 } // namespace ws
366 368
367 } // namespace ui 369 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698