Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1005)

Side by Side Diff: services/ui/ws/frame_generator.cc

Issue 2759933007: [mus]Add FrameGenerator::SetHighContrastMode(bool) (Closed)
Patch Set: Addressed nit and removed instances of FrameGeneratorDelegate Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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"
11 #include "cc/output/compositor_frame_sink.h" 11 #include "cc/output/compositor_frame_sink.h"
12 #include "cc/quads/render_pass.h" 12 #include "cc/quads/render_pass.h"
13 #include "cc/quads/render_pass_draw_quad.h" 13 #include "cc/quads/render_pass_draw_quad.h"
14 #include "cc/quads/shared_quad_state.h" 14 #include "cc/quads/shared_quad_state.h"
15 #include "cc/quads/surface_draw_quad.h" 15 #include "cc/quads/surface_draw_quad.h"
16 #include "services/ui/ws/frame_generator_delegate.h"
17 #include "services/ui/ws/server_window.h" 16 #include "services/ui/ws/server_window.h"
18 17
19 namespace ui { 18 namespace ui {
20 19
21 namespace ws { 20 namespace ws {
22 21
23 FrameGenerator::FrameGenerator( 22 FrameGenerator::FrameGenerator(
24 FrameGeneratorDelegate* delegate,
25 ServerWindow* root_window, 23 ServerWindow* root_window,
26 std::unique_ptr<cc::CompositorFrameSink> compositor_frame_sink) 24 std::unique_ptr<cc::CompositorFrameSink> compositor_frame_sink)
27 : delegate_(delegate), 25 : root_window_(root_window),
28 root_window_(root_window),
29 compositor_frame_sink_(std::move(compositor_frame_sink)) { 26 compositor_frame_sink_(std::move(compositor_frame_sink)) {
30 DCHECK(delegate_);
31 compositor_frame_sink_->BindToClient(this); 27 compositor_frame_sink_->BindToClient(this);
32 } 28 }
33 29
34 FrameGenerator::~FrameGenerator() { 30 FrameGenerator::~FrameGenerator() {
35 compositor_frame_sink_->DetachFromClient(); 31 compositor_frame_sink_->DetachFromClient();
36 } 32 }
37 33
38 void FrameGenerator::SetDeviceScaleFactor(float device_scale_factor) { 34 void FrameGenerator::SetDeviceScaleFactor(float device_scale_factor) {
39 if (device_scale_factor_ == device_scale_factor) 35 if (device_scale_factor_ == device_scale_factor)
40 return; 36 return;
41 device_scale_factor_ = device_scale_factor; 37 device_scale_factor_ = device_scale_factor;
42 if (window_manager_surface_info_.is_valid()) 38 if (window_manager_surface_info_.is_valid())
43 SetNeedsBeginFrame(true); 39 SetNeedsBeginFrame(true);
44 } 40 }
45 41
42 void FrameGenerator::SetHighContrastMode(bool enabled) {
43 if (high_contrast_mode_enabled_ == enabled)
44 return;
45
46 high_contrast_mode_enabled_ = enabled;
47 if (window_manager_surface_info_.is_valid())
48 SetNeedsBeginFrame(true);
49 }
50
46 void FrameGenerator::OnSurfaceCreated(const cc::SurfaceInfo& surface_info) { 51 void FrameGenerator::OnSurfaceCreated(const cc::SurfaceInfo& surface_info) {
47 DCHECK(surface_info.is_valid()); 52 DCHECK(surface_info.is_valid());
48 53
49 // Only handle embedded surfaces changing here. The display root surface 54 // Only handle embedded surfaces changing here. The display root surface
50 // changing is handled immediately after the CompositorFrame is submitted. 55 // changing is handled immediately after the CompositorFrame is submitted.
51 if (surface_info != window_manager_surface_info_) { 56 if (surface_info != window_manager_surface_info_) {
52 window_manager_surface_info_ = surface_info; 57 window_manager_surface_info_ = surface_info;
53 SetNeedsBeginFrame(true); 58 SetNeedsBeginFrame(true);
54 } 59 }
55 } 60 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 const gfx::Rect& output_rect) { 121 const gfx::Rect& output_rect) {
117 const int render_pass_id = 1; 122 const int render_pass_id = 1;
118 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create(); 123 std::unique_ptr<cc::RenderPass> render_pass = cc::RenderPass::Create();
119 render_pass->SetNew(render_pass_id, output_rect, output_rect, 124 render_pass->SetNew(render_pass_id, output_rect, output_rect,
120 gfx::Transform()); 125 gfx::Transform());
121 126
122 DrawWindow(render_pass.get()); 127 DrawWindow(render_pass.get());
123 128
124 cc::CompositorFrame frame; 129 cc::CompositorFrame frame;
125 frame.render_pass_list.push_back(std::move(render_pass)); 130 frame.render_pass_list.push_back(std::move(render_pass));
126 if (delegate_->IsInHighContrastMode()) { 131 if (high_contrast_mode_enabled_) {
127 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create(); 132 std::unique_ptr<cc::RenderPass> invert_pass = cc::RenderPass::Create();
128 invert_pass->SetNew(2, output_rect, output_rect, gfx::Transform()); 133 invert_pass->SetNew(2, output_rect, output_rect, gfx::Transform());
129 cc::SharedQuadState* shared_state = 134 cc::SharedQuadState* shared_state =
130 invert_pass->CreateAndAppendSharedQuadState(); 135 invert_pass->CreateAndAppendSharedQuadState();
131 gfx::Size scaled_bounds = gfx::ScaleToCeiledSize( 136 gfx::Size scaled_bounds = gfx::ScaleToCeiledSize(
132 output_rect.size(), window_manager_surface_info_.device_scale_factor(), 137 output_rect.size(), window_manager_surface_info_.device_scale_factor(),
133 window_manager_surface_info_.device_scale_factor()); 138 window_manager_surface_info_.device_scale_factor());
134 shared_state->SetAll(gfx::Transform(), scaled_bounds, output_rect, 139 shared_state->SetAll(gfx::Transform(), scaled_bounds, output_rect,
135 output_rect, false, 1.f, SkBlendMode::kSrcOver, 0); 140 output_rect, false, 1.f, SkBlendMode::kSrcOver, 0);
136 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>(); 141 auto* quad = invert_pass->CreateAndAppendDrawQuad<cc::RenderPassDrawQuad>();
137 render_pass->filters.Append(cc::FilterOperation::CreateInvertFilter(1.f)); 142 frame.render_pass_list.back()->filters.Append(
msw 2017/03/20 23:55:26 q: why not continue using |render_pass| here?
Alex Z. 2017/03/21 15:30:53 render_pass is moved on line 130.
143 cc::FilterOperation::CreateInvertFilter(1.f));
138 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, 144 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id,
139 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */, 145 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */,
140 gfx::Size() /* mask_texture_size */, 146 gfx::Size() /* mask_texture_size */,
141 gfx::Vector2dF() /* filters_scale */, 147 gfx::Vector2dF() /* filters_scale */,
142 gfx::PointF() /* filters_origin */, 148 gfx::PointF() /* filters_origin */,
143 gfx::RectF() /* tex_coord_rect */); 149 gfx::RectF() /* tex_coord_rect */);
144 frame.render_pass_list.push_back(std::move(invert_pass)); 150 frame.render_pass_list.push_back(std::move(invert_pass));
145 } 151 }
146 frame.metadata.device_scale_factor = device_scale_factor_; 152 frame.metadata.device_scale_factor = device_scale_factor_;
147 153
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 observing_begin_frames_ = needs_begin_frame; 197 observing_begin_frames_ = needs_begin_frame;
192 if (needs_begin_frame) 198 if (needs_begin_frame)
193 begin_frame_source_->AddObserver(this); 199 begin_frame_source_->AddObserver(this);
194 else 200 else
195 begin_frame_source_->RemoveObserver(this); 201 begin_frame_source_->RemoveObserver(this);
196 } 202 }
197 203
198 } // namespace ws 204 } // namespace ws
199 205
200 } // namespace ui 206 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698