| 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 "base/containers/adapters.h" | 7 #include "base/containers/adapters.h" |
| 8 #include "cc/output/compositor_frame.h" | 8 #include "cc/output/compositor_frame.h" |
| 9 #include "cc/quads/render_pass.h" | 9 #include "cc/quads/render_pass.h" |
| 10 #include "cc/quads/render_pass_draw_quad.h" | 10 #include "cc/quads/render_pass_draw_quad.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 const gfx::Rect& output_rect) { | 113 const gfx::Rect& output_rect) { |
| 114 const cc::RenderPassId render_pass_id(1, 1); | 114 const cc::RenderPassId render_pass_id(1, 1); |
| 115 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); | 115 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); |
| 116 render_pass->SetNew(render_pass_id, output_rect, dirty_rect_, | 116 render_pass->SetNew(render_pass_id, output_rect, dirty_rect_, |
| 117 gfx::Transform()); | 117 gfx::Transform()); |
| 118 | 118 |
| 119 bool may_contain_video = false; | 119 bool may_contain_video = false; |
| 120 DrawWindowTree(render_pass.get(), delegate_->GetRootWindow(), gfx::Vector2d(), | 120 DrawWindowTree(render_pass.get(), delegate_->GetRootWindow(), gfx::Vector2d(), |
| 121 1.0f, &may_contain_video); | 121 1.0f, &may_contain_video); |
| 122 | 122 |
| 123 std::unique_ptr<cc::DelegatedFrameData> frame_data( | 123 cc::CompositorFrame frame; |
| 124 new cc::DelegatedFrameData); | 124 frame.render_pass_list.push_back(std::move(render_pass)); |
| 125 frame_data->render_pass_list.push_back(std::move(render_pass)); | |
| 126 if (delegate_->IsInHighContrastMode()) { | 125 if (delegate_->IsInHighContrastMode()) { |
| 127 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); | 126 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); |
| 128 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, dirty_rect_, | 127 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, dirty_rect_, |
| 129 gfx::Transform()); | 128 gfx::Transform()); |
| 130 cc::SharedQuadState* shared_state = | 129 cc::SharedQuadState* shared_state = |
| 131 invert_pass->CreateAndAppendSharedQuadState(); | 130 invert_pass->CreateAndAppendSharedQuadState(); |
| 132 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect, | 131 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect, |
| 133 output_rect, false, 1.f, SkXfermode::kSrcOver_Mode, 0); | 132 output_rect, false, 1.f, SkXfermode::kSrcOver_Mode, 0); |
| 134 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); | 133 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); |
| 135 cc::FilterOperations filters; | 134 cc::FilterOperations filters; |
| 136 filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); | 135 filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); |
| 137 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, | 136 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, |
| 138 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */, | 137 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */, |
| 139 gfx::Size() /* mask_texture_size */, filters, | 138 gfx::Size() /* mask_texture_size */, filters, |
| 140 gfx::Vector2dF() /* filters_scale */, | 139 gfx::Vector2dF() /* filters_scale */, |
| 141 gfx::PointF() /* filters_origin */, | 140 gfx::PointF() /* filters_origin */, |
| 142 cc::FilterOperations() /* background_filters */); | 141 cc::FilterOperations() /* background_filters */); |
| 143 frame_data->render_pass_list.push_back(std::move(invert_pass)); | 142 frame.render_pass_list.push_back(std::move(invert_pass)); |
| 144 } | 143 } |
| 145 | 144 |
| 146 cc::CompositorFrame frame; | |
| 147 frame.delegated_frame_data = std::move(frame_data); | |
| 148 frame.metadata.may_contain_video = may_contain_video; | 145 frame.metadata.may_contain_video = may_contain_video; |
| 149 return frame; | 146 return frame; |
| 150 } | 147 } |
| 151 | 148 |
| 152 void FrameGenerator::DrawWindowTree( | 149 void FrameGenerator::DrawWindowTree( |
| 153 cc::RenderPass* pass, | 150 cc::RenderPass* pass, |
| 154 ServerWindow* window, | 151 ServerWindow* window, |
| 155 const gfx::Vector2d& parent_to_root_origin_offset, | 152 const gfx::Vector2d& parent_to_root_origin_offset, |
| 156 float opacity, | 153 float opacity, |
| 157 bool* may_contain_video) { | 154 bool* may_contain_video) { |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 ReleaseFrameSinkReference(default_compositor_frame_sink->frame_sink_id()); | 310 ReleaseFrameSinkReference(default_compositor_frame_sink->frame_sink_id()); |
| 314 ServerWindowCompositorFrameSink* underlay_compositor_frame_sink = | 311 ServerWindowCompositorFrameSink* underlay_compositor_frame_sink = |
| 315 surface_manager->GetUnderlayCompositorFrameSink(); | 312 surface_manager->GetUnderlayCompositorFrameSink(); |
| 316 if (underlay_compositor_frame_sink) | 313 if (underlay_compositor_frame_sink) |
| 317 ReleaseFrameSinkReference(underlay_compositor_frame_sink->frame_sink_id()); | 314 ReleaseFrameSinkReference(underlay_compositor_frame_sink->frame_sink_id()); |
| 318 } | 315 } |
| 319 | 316 |
| 320 } // namespace ws | 317 } // namespace ws |
| 321 | 318 |
| 322 } // namespace ui | 319 } // namespace ui |
| OLD | NEW |