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