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

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

Issue 2527283003: cc: Introduce BeginFrame sequence numbers and acknowledgements.
Patch Set: Address Brian's comments. 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 <utility> 7 #include <utility>
8 8
9 #include "base/containers/adapters.h" 9 #include "base/containers/adapters.h"
10 #include "cc/output/compositor_frame.h" 10 #include "cc/output/compositor_frame.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // SurfaceId to all embedded surfaces. For example, this would happen when the 82 // SurfaceId to all embedded surfaces. For example, this would happen when the
83 // display resolution or device scale factor changes. 83 // display resolution or device scale factor changes.
84 if (window == root_window_) 84 if (window == root_window_)
85 AddNewParentReferences(old_surface_id, surface_id); 85 AddNewParentReferences(old_surface_id, surface_id);
86 86
87 PerformAddSurfaceReferences(); 87 PerformAddSurfaceReferences();
88 } 88 }
89 89
90 void FrameGenerator::DidReceiveCompositorFrameAck() {} 90 void FrameGenerator::DidReceiveCompositorFrameAck() {}
91 91
92 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_arags) { 92 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) {
93 if (!root_window_->visible()) 93 if (!root_window_->visible())
94 return; 94 return;
95 95
96 // TODO(fsamuel): We should add a trace for generating a top level frame. 96 // TODO(fsamuel): We should add a trace for generating a top level frame.
97 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); 97 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds()));
98 frame.metadata.begin_frame_source_id = begin_frame_args.source_id;
99 frame.metadata.begin_frame_number = begin_frame_args.sequence_number;
100 frame.metadata.latest_confirmed_frame = begin_frame_args.sequence_number;
98 101
99 if (compositor_frame_sink_) { 102 if (compositor_frame_sink_) {
100 gfx::Size frame_size = last_submitted_frame_size_; 103 gfx::Size frame_size = last_submitted_frame_size_;
101 if (!frame.render_pass_list.empty()) 104 if (!frame.render_pass_list.empty())
102 frame_size = frame.render_pass_list[0]->output_rect.size(); 105 frame_size = frame.render_pass_list[0]->output_rect.size();
103 if (!local_frame_id_.is_valid() || frame_size != last_submitted_frame_size_) 106 if (!local_frame_id_.is_valid() || frame_size != last_submitted_frame_size_)
104 local_frame_id_ = id_allocator_.GenerateId(); 107 local_frame_id_ = id_allocator_.GenerateId();
105 compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_, 108 compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_,
106 std::move(frame)); 109 std::move(frame));
107 last_submitted_frame_size_ = frame_size; 110 last_submitted_frame_size_ = frame_size;
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 cc::SurfaceId underlay_surface_id = 346 cc::SurfaceId underlay_surface_id =
344 window->compositor_frame_sink_manager()->GetLatestSurfaceId( 347 window->compositor_frame_sink_manager()->GetLatestSurfaceId(
345 mojom::CompositorFrameSinkType::UNDERLAY); 348 mojom::CompositorFrameSinkType::UNDERLAY);
346 if (underlay_surface_id.is_valid()) 349 if (underlay_surface_id.is_valid())
347 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id()); 350 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id());
348 } 351 }
349 352
350 } // namespace ws 353 } // namespace ws
351 354
352 } // namespace ui 355 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698