| 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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 | 106 |
| 107 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( | 107 cc::CompositorFrame FrameGenerator::GenerateCompositorFrame( |
| 108 const gfx::Rect& output_rect) { | 108 const gfx::Rect& output_rect) { |
| 109 const cc::RenderPassId render_pass_id(1, 1); | 109 const cc::RenderPassId render_pass_id(1, 1); |
| 110 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); | 110 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); |
| 111 render_pass->SetNew(render_pass_id, output_rect, output_rect, | 111 render_pass->SetNew(render_pass_id, output_rect, output_rect, |
| 112 gfx::Transform()); | 112 gfx::Transform()); |
| 113 | 113 |
| 114 DrawWindowTree(render_pass.get(), root_window_, gfx::Vector2d(), 1.0f); | 114 DrawWindowTree(render_pass.get(), root_window_, gfx::Vector2d(), 1.0f); |
| 115 | 115 |
| 116 cc::CompositorFrame frame; | 116 std::unique_ptr<cc::DelegatedFrameData> frame_data( |
| 117 frame.render_pass_list.push_back(std::move(render_pass)); | 117 new cc::DelegatedFrameData); |
| 118 frame_data->render_pass_list.push_back(std::move(render_pass)); |
| 118 if (delegate_->IsInHighContrastMode()) { | 119 if (delegate_->IsInHighContrastMode()) { |
| 119 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); | 120 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); |
| 120 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, output_rect, | 121 invert_pass->SetNew(cc::RenderPassId(2, 0), output_rect, output_rect, |
| 121 gfx::Transform()); | 122 gfx::Transform()); |
| 122 cc::SharedQuadState* shared_state = | 123 cc::SharedQuadState* shared_state = |
| 123 invert_pass->CreateAndAppendSharedQuadState(); | 124 invert_pass->CreateAndAppendSharedQuadState(); |
| 124 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect, | 125 shared_state->SetAll(gfx::Transform(), output_rect.size(), output_rect, |
| 125 output_rect, false, 1.f, SkXfermode::kSrcOver_Mode, 0); | 126 output_rect, false, 1.f, SkXfermode::kSrcOver_Mode, 0); |
| 126 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); | 127 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); |
| 127 cc::FilterOperations filters; | 128 cc::FilterOperations filters; |
| 128 filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); | 129 filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); |
| 129 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, | 130 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, |
| 130 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */, | 131 0 /* mask_resource_id */, gfx::Vector2dF() /* mask_uv_scale */, |
| 131 gfx::Size() /* mask_texture_size */, filters, | 132 gfx::Size() /* mask_texture_size */, filters, |
| 132 gfx::Vector2dF() /* filters_scale */, | 133 gfx::Vector2dF() /* filters_scale */, |
| 133 gfx::PointF() /* filters_origin */, | 134 gfx::PointF() /* filters_origin */, |
| 134 cc::FilterOperations() /* background_filters */); | 135 cc::FilterOperations() /* background_filters */); |
| 135 frame.render_pass_list.push_back(std::move(invert_pass)); | 136 frame_data->render_pass_list.push_back(std::move(invert_pass)); |
| 136 } | 137 } |
| 137 | 138 |
| 139 cc::CompositorFrame frame; |
| 140 frame.delegated_frame_data = std::move(frame_data); |
| 138 return frame; | 141 return frame; |
| 139 } | 142 } |
| 140 | 143 |
| 141 void FrameGenerator::DrawWindowTree( | 144 void FrameGenerator::DrawWindowTree( |
| 142 cc::RenderPass* pass, | 145 cc::RenderPass* pass, |
| 143 ServerWindow* window, | 146 ServerWindow* window, |
| 144 const gfx::Vector2d& parent_to_root_origin_offset, | 147 const gfx::Vector2d& parent_to_root_origin_offset, |
| 145 float opacity) { | 148 float opacity) { |
| 146 if (!window->visible()) | 149 if (!window->visible()) |
| 147 return; | 150 return; |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 cc::SurfaceId underlay_surface_id = | 304 cc::SurfaceId underlay_surface_id = |
| 302 window->compositor_frame_sink_manager()->GetLatestSurfaceId( | 305 window->compositor_frame_sink_manager()->GetLatestSurfaceId( |
| 303 mojom::CompositorFrameSinkType::UNDERLAY); | 306 mojom::CompositorFrameSinkType::UNDERLAY); |
| 304 if (underlay_surface_id.is_valid()) | 307 if (underlay_surface_id.is_valid()) |
| 305 ReleaseFrameSinkReference(underlay_surface_id.frame_sink_id()); | 308 ReleaseFrameSinkReference(underlay_surface_id.frame_sink_id()); |
| 306 } | 309 } |
| 307 | 310 |
| 308 } // namespace ws | 311 } // namespace ws |
| 309 | 312 |
| 310 } // namespace ui | 313 } // namespace ui |
| OLD | NEW |