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

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

Issue 2755463002: [cc] Fix CompositorFrameSinkSupport BeginFrameAck interface. (Closed)
Patch Set: pass on acks to MojoCFSs in clients. Created 3 years, 9 months 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 #include <vector> 8 #include <vector>
9 9
10 #include "cc/output/compositor_frame.h" 10 #include "cc/output/compositor_frame.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 const gfx::Rect& viewport, 86 const gfx::Rect& viewport,
87 bool resourceless_software_draw) {} 87 bool resourceless_software_draw) {}
88 88
89 void FrameGenerator::SetMemoryPolicy(const cc::ManagedMemoryPolicy& policy) {} 89 void FrameGenerator::SetMemoryPolicy(const cc::ManagedMemoryPolicy& policy) {}
90 90
91 void FrameGenerator::SetExternalTilePriorityConstraints( 91 void FrameGenerator::SetExternalTilePriorityConstraints(
92 const gfx::Rect& viewport_rect, 92 const gfx::Rect& viewport_rect,
93 const gfx::Transform& transform) {} 93 const gfx::Transform& transform) {}
94 94
95 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) { 95 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) {
96 // TODO(eseckler): Acknowledge BeginFrame if we don't submit CompositorFrame.
Fady Samuel 2017/03/18 13:03:11 Some unit tests have been introduced for FrameGene
Eric Seckler 2017/03/20 11:54:03 Since it doesn't ack any BeginFrames at the moment
96 if (!root_window_->visible()) 97 if (!root_window_->visible())
97 return; 98 return;
99 last_begin_frame_args_ = begin_frame_args;
98 100
99 // 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.
100 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); 102 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds()));
101 103
102 compositor_frame_sink_->SubmitCompositorFrame(std::move(frame)); 104 compositor_frame_sink_->SubmitCompositorFrame(std::move(frame));
103 SetNeedsBeginFrame(false); 105 SetNeedsBeginFrame(false);
104 last_begin_frame_args_ = begin_frame_args;
105 } 106 }
106 107
107 const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const { 108 const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const {
108 return last_begin_frame_args_; 109 return last_begin_frame_args_;
109 } 110 }
110 111
111 void FrameGenerator::OnBeginFrameSourcePausedChanged(bool paused) {} 112 void FrameGenerator::OnBeginFrameSourcePausedChanged(bool paused) {}
112 113
113 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( 114 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame(
114 const gfx::Rect& output_rect) { 115 const gfx::Rect& output_rect) {
(...skipping 20 matching lines...) Expand all
135 render_pass->filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); 136 render_pass->filters.Append(cc::FilterOperation::CreateInvertFilter(1.f));
136 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, 137 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id,
137 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */, 138 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */,
138 gfx::Size() /* mask_texture_size */, 139 gfx::Size() /* mask_texture_size */,
139 gfx::Vector2dF() /* filters_scale */, 140 gfx::Vector2dF() /* filters_scale */,
140 gfx::PointF() /* filters_origin */, 141 gfx::PointF() /* filters_origin */,
141 gfx::RectF() /* tex_coord_rect */); 142 gfx::RectF() /* tex_coord_rect */);
142 frame.render_pass_list.push_back(std::move(invert_pass)); 143 frame.render_pass_list.push_back(std::move(invert_pass));
143 } 144 }
144 frame.metadata.device_scale_factor = device_scale_factor_; 145 frame.metadata.device_scale_factor = device_scale_factor_;
146 frame.metadata.begin_frame_ack = cc::BeginFrameAck(
147 last_begin_frame_args_.source_id, last_begin_frame_args_.sequence_number,
148 last_begin_frame_args_.sequence_number, 0, true);
145 149
146 if (window_manager_surface_info_.is_valid()) { 150 if (window_manager_surface_info_.is_valid()) {
147 frame.metadata.referenced_surfaces.push_back( 151 frame.metadata.referenced_surfaces.push_back(
148 window_manager_surface_info_.id()); 152 window_manager_surface_info_.id());
149 } 153 }
150 154
151 return frame; 155 return frame;
152 } 156 }
153 157
154 void FrameGenerator::DrawWindow(cc::RenderPass* pass) { 158 void FrameGenerator::DrawWindow(cc::RenderPass* pass) {
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 return; 196 return;
193 } 197 }
194 198
195 begin_frame_source_->RemoveObserver(this); 199 begin_frame_source_->RemoveObserver(this);
196 observing_begin_frames_ = false; 200 observing_begin_frames_ = false;
197 } 201 }
198 202
199 } // namespace ws 203 } // namespace ws
200 204
201 } // namespace ui 205 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698