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

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

Issue 2720503008: Add cc::SurfaceInfo::is_valid() (Closed)
Patch Set: Added Log() 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 "base/containers/adapters.h" 10 #include "base/containers/adapters.h"
(...skipping 25 matching lines...) Expand all
36 widget, std::move(sink_request), binding_.CreateInterfacePtrAndBind(), 36 widget, std::move(sink_request), binding_.CreateInterfacePtrAndBind(),
37 std::move(display_request)); 37 std::move(display_request));
38 } 38 }
39 39
40 FrameGenerator::~FrameGenerator() = default; 40 FrameGenerator::~FrameGenerator() = default;
41 41
42 void FrameGenerator::SetDeviceScaleFactor(float device_scale_factor) { 42 void FrameGenerator::SetDeviceScaleFactor(float device_scale_factor) {
43 if (device_scale_factor_ == device_scale_factor) 43 if (device_scale_factor_ == device_scale_factor)
44 return; 44 return;
45 device_scale_factor_ = device_scale_factor; 45 device_scale_factor_ = device_scale_factor;
46 if (window_manager_surface_info_.id().is_valid()) 46 if (window_manager_surface_info_.is_valid())
47 compositor_frame_sink_->SetNeedsBeginFrame(true); 47 compositor_frame_sink_->SetNeedsBeginFrame(true);
48 } 48 }
49 49
50 void FrameGenerator::OnSurfaceCreated(const cc::SurfaceInfo& surface_info) { 50 void FrameGenerator::OnSurfaceCreated(const cc::SurfaceInfo& surface_info) {
51 DCHECK(surface_info.id().is_valid()); 51 DCHECK(surface_info.is_valid());
52 52
53 // Only handle embedded surfaces changing here. The display root surface 53 // Only handle embedded surfaces changing here. The display root surface
54 // changing is handled immediately after the CompositorFrame is submitted. 54 // changing is handled immediately after the CompositorFrame is submitted.
55 if (surface_info != window_manager_surface_info_) { 55 if (surface_info != window_manager_surface_info_) {
56 window_manager_surface_info_ = surface_info; 56 window_manager_surface_info_ = surface_info;
57 compositor_frame_sink_->SetNeedsBeginFrame(true); 57 compositor_frame_sink_->SetNeedsBeginFrame(true);
58 } 58 }
59 } 59 }
60 60
61 void FrameGenerator::OnWindowDamaged() { 61 void FrameGenerator::OnWindowDamaged() {
62 if (window_manager_surface_info_.id().is_valid()) 62 if (window_manager_surface_info_.is_valid())
63 compositor_frame_sink_->SetNeedsBeginFrame(true); 63 compositor_frame_sink_->SetNeedsBeginFrame(true);
64 } 64 }
65 65
66 void FrameGenerator::DidReceiveCompositorFrameAck() {} 66 void FrameGenerator::DidReceiveCompositorFrameAck() {}
67 67
68 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_arags) { 68 void FrameGenerator::OnBeginFrame(const cc::BeginFrameArgs& begin_frame_arags) {
69 if (!root_window_->visible()) 69 if (!root_window_->visible())
70 return; 70 return;
71 71
72 // TODO(fsamuel): We should add a trace for generating a top level frame. 72 // TODO(fsamuel): We should add a trace for generating a top level frame.
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id, 127 quad->SetNew(shared_state, output_rect, output_rect, render_pass_id,
128 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */, 128 0 /* mask_resource_id */, gfx::RectF() /* mask_uv_rect */,
129 gfx::Size() /* mask_texture_size */, 129 gfx::Size() /* mask_texture_size */,
130 gfx::Vector2dF() /* filters_scale */, 130 gfx::Vector2dF() /* filters_scale */,
131 gfx::PointF() /* filters_origin */, 131 gfx::PointF() /* filters_origin */,
132 gfx::RectF() /* tex_coord_rect */); 132 gfx::RectF() /* tex_coord_rect */);
133 frame.render_pass_list.push_back(std::move(invert_pass)); 133 frame.render_pass_list.push_back(std::move(invert_pass));
134 } 134 }
135 frame.metadata.device_scale_factor = device_scale_factor_; 135 frame.metadata.device_scale_factor = device_scale_factor_;
136 136
137 if (window_manager_surface_info_.id().is_valid()) { 137 if (window_manager_surface_info_.is_valid()) {
138 frame.metadata.referenced_surfaces.push_back( 138 frame.metadata.referenced_surfaces.push_back(
139 window_manager_surface_info_.id()); 139 window_manager_surface_info_.id());
140 } 140 }
141 141
142 return frame; 142 return frame;
143 } 143 }
144 144
145 void FrameGenerator::DrawWindow(cc::RenderPass* pass) { 145 void FrameGenerator::DrawWindow(cc::RenderPass* pass) {
146 DCHECK(window_manager_surface_info_.id().is_valid()); 146 DCHECK(window_manager_surface_info_.is_valid());
147 147
148 const gfx::Rect bounds_at_origin( 148 const gfx::Rect bounds_at_origin(
149 window_manager_surface_info_.size_in_pixels()); 149 window_manager_surface_info_.size_in_pixels());
150 150
151 gfx::Transform quad_to_target_transform; 151 gfx::Transform quad_to_target_transform;
152 quad_to_target_transform.Translate(bounds_at_origin.x(), 152 quad_to_target_transform.Translate(bounds_at_origin.x(),
153 bounds_at_origin.y()); 153 bounds_at_origin.y());
154 154
155 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); 155 cc::SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState();
156 156
(...skipping 12 matching lines...) Expand all
169 auto* quad = pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); 169 auto* quad = pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>();
170 quad->SetAll(sqs, bounds_at_origin /* rect */, gfx::Rect() /* opaque_rect */, 170 quad->SetAll(sqs, bounds_at_origin /* rect */, gfx::Rect() /* opaque_rect */,
171 bounds_at_origin /* visible_rect */, true /* needs_blending*/, 171 bounds_at_origin /* visible_rect */, true /* needs_blending*/,
172 window_manager_surface_info_.id(), 172 window_manager_surface_info_.id(),
173 cc::SurfaceDrawQuadType::PRIMARY, nullptr); 173 cc::SurfaceDrawQuadType::PRIMARY, nullptr);
174 } 174 }
175 175
176 } // namespace ws 176 } // namespace ws
177 177
178 } // namespace ui 178 } // namespace ui
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | third_party/WebKit/Source/platform/graphics/CanvasSurfaceLayerBridge.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698