| 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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 const gfx::Rect& viewport, | 91 const gfx::Rect& viewport, |
| 92 bool resourceless_software_draw) {} | 92 bool resourceless_software_draw) {} |
| 93 | 93 |
| 94 void FrameGenerator::SetMemoryPolicy(const cc::ManagedMemoryPolicy& policy) {} | 94 void FrameGenerator::SetMemoryPolicy(const cc::ManagedMemoryPolicy& policy) {} |
| 95 | 95 |
| 96 void FrameGenerator::SetExternalTilePriorityConstraints( | 96 void FrameGenerator::SetExternalTilePriorityConstraints( |
| 97 const gfx::Rect& viewport_rect, | 97 const gfx::Rect& viewport_rect, |
| 98 const gfx::Transform& transform) {} | 98 const gfx::Transform& transform) {} |
| 99 | 99 |
| 100 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) { | 100 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_args) { |
| 101 current_begin_frame_ack_ = cc::BeginFrameAck( |
| 102 begin_frame_args.source_id, begin_frame_args.sequence_number, |
| 103 begin_frame_args.sequence_number, 0, false); |
| 101 if (!root_window_->visible() || | 104 if (!root_window_->visible() || |
| 102 begin_frame_args.type == cc::BeginFrameArgs::MISSED) { | 105 begin_frame_args.type == cc::BeginFrameArgs::MISSED) { |
| 106 begin_frame_source_->DidFinishFrame(this, current_begin_frame_ack_); |
| 103 return; | 107 return; |
| 104 } | 108 } |
| 105 | 109 |
| 110 current_begin_frame_ack_.has_damage = true; |
| 111 last_begin_frame_args_ = begin_frame_args; |
| 112 |
| 106 // TODO(fsamuel): We should add a trace for generating a top level frame. | 113 // TODO(fsamuel): We should add a trace for generating a top level frame. |
| 107 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); | 114 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); |
| 115 compositor_frame_sink_->SubmitCompositorFrame(std::move(frame)); |
| 108 | 116 |
| 109 compositor_frame_sink_->SubmitCompositorFrame(std::move(frame)); | 117 begin_frame_source_->DidFinishFrame(this, current_begin_frame_ack_); |
| 110 SetNeedsBeginFrame(false); | 118 SetNeedsBeginFrame(false); |
| 111 last_begin_frame_args_ = begin_frame_args; | |
| 112 } | 119 } |
| 113 | 120 |
| 114 const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const { | 121 const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const { |
| 115 return last_begin_frame_args_; | 122 return last_begin_frame_args_; |
| 116 } | 123 } |
| 117 | 124 |
| 118 void FrameGenerator::OnBeginFrameSourcePausedChanged(bool paused) {} | 125 void FrameGenerator::OnBeginFrameSourcePausedChanged(bool paused) {} |
| 119 | 126 |
| 120 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( | 127 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( |
| 121 const gfx::Rect& output_rect) { | 128 const gfx::Rect& output_rect) { |
| (...skipping 21 matching lines...) Expand all Loading... |
| 143 cc::FilterOperation::CreateInvertFilter(1.f)); | 150 cc::FilterOperation::CreateInvertFilter(1.f)); |
| 144 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, | 151 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, |
| 145 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */, | 152 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */, |
| 146 gfx::Size() /* mask_texture_size */, | 153 gfx::Size() /* mask_texture_size */, |
| 147 gfx::Vector2dF() /* filters_scale */, | 154 gfx::Vector2dF() /* filters_scale */, |
| 148 gfx::PointF() /* filters_origin */, | 155 gfx::PointF() /* filters_origin */, |
| 149 gfx::RectF() /* tex_coord_rect */); | 156 gfx::RectF() /* tex_coord_rect */); |
| 150 frame.render_pass_list.push_back(std::move(invert_pass)); | 157 frame.render_pass_list.push_back(std::move(invert_pass)); |
| 151 } | 158 } |
| 152 frame.metadata.device_scale_factor = device_scale_factor_; | 159 frame.metadata.device_scale_factor = device_scale_factor_; |
| 160 frame.metadata.begin_frame_ack = current_begin_frame_ack_; |
| 153 | 161 |
| 154 if (window_manager_surface_info_.is_valid()) { | 162 if (window_manager_surface_info_.is_valid()) { |
| 155 frame.metadata.referenced_surfaces.push_back( | 163 frame.metadata.referenced_surfaces.push_back( |
| 156 window_manager_surface_info_.id()); | 164 window_manager_surface_info_.id()); |
| 157 } | 165 } |
| 158 | 166 |
| 159 return frame; | 167 return frame; |
| 160 } | 168 } |
| 161 | 169 |
| 162 void FrameGenerator::DrawWindow(cc::RenderPass* pass) { | 170 void FrameGenerator::DrawWindow(cc::RenderPass* pass) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 observing_begin_frames_ = needs_begin_frame; | 205 observing_begin_frames_ = needs_begin_frame; |
| 198 if (needs_begin_frame) | 206 if (needs_begin_frame) |
| 199 begin_frame_source_->AddObserver(this); | 207 begin_frame_source_->AddObserver(this); |
| 200 else | 208 else |
| 201 begin_frame_source_->RemoveObserver(this); | 209 begin_frame_source_->RemoveObserver(this); |
| 202 } | 210 } |
| 203 | 211 |
| 204 } // namespace ws | 212 } // namespace ws |
| 205 | 213 |
| 206 } // namespace ui | 214 } // namespace ui |
| OLD | NEW |