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

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

Issue 2527283003: cc: Introduce BeginFrame sequence numbers and acknowledgements.
Patch Set: Address Sami's comments, DisplayScheduler observes while BFSObservers exist. 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_number = begin_frame_args.sequence_number;
99 frame.metadata.oldest_incorporated_frame = begin_frame_args.sequence_number;
98 100
99 if (compositor_frame_sink_) { 101 if (compositor_frame_sink_) {
100 gfx::Size frame_size = last_submitted_frame_size_; 102 gfx::Size frame_size = last_submitted_frame_size_;
101 if (!frame.render_pass_list.empty()) 103 if (!frame.render_pass_list.empty())
102 frame_size = frame.render_pass_list[0]->output_rect.size(); 104 frame_size = frame.render_pass_list[0]->output_rect.size();
103 if (!local_frame_id_.is_valid() || frame_size != last_submitted_frame_size_) 105 if (!local_frame_id_.is_valid() || frame_size != last_submitted_frame_size_)
104 local_frame_id_ = id_allocator_.GenerateId(); 106 local_frame_id_ = id_allocator_.GenerateId();
105 compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_, 107 compositor_frame_sink_->SubmitCompositorFrame(local_frame_id_,
106 std::move(frame)); 108 std::move(frame));
107 last_submitted_frame_size_ = frame_size; 109 last_submitted_frame_size_ = frame_size;
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 cc::SurfaceId underlay_surface_id = 345 cc::SurfaceId underlay_surface_id =
344 window->compositor_frame_sink_manager()->GetLatestSurfaceId( 346 window->compositor_frame_sink_manager()->GetLatestSurfaceId(
345 mojom::CompositorFrameSinkType::UNDERLAY); 347 mojom::CompositorFrameSinkType::UNDERLAY);
346 if (underlay_surface_id.is_valid()) 348 if (underlay_surface_id.is_valid())
347 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id()); 349 RemoveFrameSinkReference(underlay_surface_id.frame_sink_id());
348 } 350 }
349 351
350 } // namespace ws 352 } // namespace ws
351 353
352 } // namespace ui 354 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698