| 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 current_begin_frame_ack_ = cc::BeginFrameAck( |
| 97 begin_frame_args.source_id, begin_frame_args.sequence_number, |
| 98 begin_frame_args.sequence_number, 0, false); |
| 96 if (!root_window_->visible() || | 99 if (!root_window_->visible() || |
| 97 begin_frame_args.type == cc::BeginFrameArgs::MISSED) { | 100 begin_frame_args.type == cc::BeginFrameArgs::MISSED) { |
| 101 begin_frame_source_->DidFinishFrame(this, current_begin_frame_ack_); |
| 98 return; | 102 return; |
| 99 } | 103 } |
| 100 | 104 |
| 105 current_begin_frame_ack_.has_damage = true; |
| 106 last_begin_frame_args_ = begin_frame_args; |
| 107 |
| 101 // TODO(fsamuel): We should add a trace for generating a top level frame. | 108 // TODO(fsamuel): We should add a trace for generating a top level frame. |
| 102 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); | 109 cc::CompositorFrame frame(GenerateCompositorFrame(root_window_->bounds())); |
| 110 compositor_frame_sink_->SubmitCompositorFrame(std::move(frame)); |
| 103 | 111 |
| 104 compositor_frame_sink_->SubmitCompositorFrame(std::move(frame)); | 112 begin_frame_source_->DidFinishFrame(this, current_begin_frame_ack_); |
| 105 SetNeedsBeginFrame(false); | 113 SetNeedsBeginFrame(false); |
| 106 last_begin_frame_args_ = begin_frame_args; | |
| 107 } | 114 } |
| 108 | 115 |
| 109 const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const { | 116 const cc::BeginFrameArgs& FrameGenerator::LastUsedBeginFrameArgs() const { |
| 110 return last_begin_frame_args_; | 117 return last_begin_frame_args_; |
| 111 } | 118 } |
| 112 | 119 |
| 113 void FrameGenerator::OnBeginFrameSourcePausedChanged(bool paused) {} | 120 void FrameGenerator::OnBeginFrameSourcePausedChanged(bool paused) {} |
| 114 | 121 |
| 115 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( | 122 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( |
| 116 const gfx::Rect& output_rect) { | 123 const gfx::Rect& output_rect) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 137 render_pass->filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); | 144 render_pass->filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); |
| 138 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, | 145 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, |
| 139 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */, | 146 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */, |
| 140 gfx::Size() /* mask_texture_size */, | 147 gfx::Size() /* mask_texture_size */, |
| 141 gfx::Vector2dF() /* filters_scale */, | 148 gfx::Vector2dF() /* filters_scale */, |
| 142 gfx::PointF() /* filters_origin */, | 149 gfx::PointF() /* filters_origin */, |
| 143 gfx::RectF() /* tex_coord_rect */); | 150 gfx::RectF() /* tex_coord_rect */); |
| 144 frame.render_pass_list.push_back(std::move(invert_pass)); | 151 frame.render_pass_list.push_back(std::move(invert_pass)); |
| 145 } | 152 } |
| 146 frame.metadata.device_scale_factor = device_scale_factor_; | 153 frame.metadata.device_scale_factor = device_scale_factor_; |
| 154 frame.metadata.begin_frame_ack = current_begin_frame_ack_; |
| 147 | 155 |
| 148 if (window_manager_surface_info_.is_valid()) { | 156 if (window_manager_surface_info_.is_valid()) { |
| 149 frame.metadata.referenced_surfaces.push_back( | 157 frame.metadata.referenced_surfaces.push_back( |
| 150 window_manager_surface_info_.id()); | 158 window_manager_surface_info_.id()); |
| 151 } | 159 } |
| 152 | 160 |
| 153 return frame; | 161 return frame; |
| 154 } | 162 } |
| 155 | 163 |
| 156 void FrameGenerator::DrawWindow(cc::RenderPass* pass) { | 164 void FrameGenerator::DrawWindow(cc::RenderPass* pass) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 observing_begin_frames_ = needs_begin_frame; | 199 observing_begin_frames_ = needs_begin_frame; |
| 192 if (needs_begin_frame) | 200 if (needs_begin_frame) |
| 193 begin_frame_source_->AddObserver(this); | 201 begin_frame_source_->AddObserver(this); |
| 194 else | 202 else |
| 195 begin_frame_source_->RemoveObserver(this); | 203 begin_frame_source_->RemoveObserver(this); |
| 196 } | 204 } |
| 197 | 205 |
| 198 } // namespace ws | 206 } // namespace ws |
| 199 | 207 |
| 200 } // namespace ui | 208 } // namespace ui |
| OLD | NEW |