Chromium Code Reviews| 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 |