OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |