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

Side by Side Diff: cc/trees/layer_tree_impl.cc

Issue 23922006: Plumb PinchVirtualViewport layers into CC. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments, remove some pinchVirtualViewportEnabled checks. Created 7 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_impl.h" 5 #include "cc/trees/layer_tree_impl.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "cc/animation/keyframed_animation_curve.h" 8 #include "cc/animation/keyframed_animation_curve.h"
9 #include "cc/animation/scrollbar_animation_controller.h" 9 #include "cc/animation/scrollbar_animation_controller.h"
10 #include "cc/debug/traced_value.h" 10 #include "cc/debug/traced_value.h"
11 #include "cc/layers/heads_up_display_layer_impl.h" 11 #include "cc/layers/heads_up_display_layer_impl.h"
12 #include "cc/layers/layer.h"
12 #include "cc/layers/render_surface_impl.h" 13 #include "cc/layers/render_surface_impl.h"
13 #include "cc/layers/scrollbar_layer_impl_base.h" 14 #include "cc/layers/scrollbar_layer_impl_base.h"
14 #include "cc/trees/layer_tree_host_common.h" 15 #include "cc/trees/layer_tree_host_common.h"
15 #include "cc/trees/layer_tree_host_impl.h" 16 #include "cc/trees/layer_tree_host_impl.h"
16 #include "ui/gfx/size_conversions.h" 17 #include "ui/gfx/size_conversions.h"
17 #include "ui/gfx/vector2d_conversions.h" 18 #include "ui/gfx/vector2d_conversions.h"
18 19
19 namespace cc { 20 namespace cc {
20 21
21 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl) 22 LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl)
22 : layer_tree_host_impl_(layer_tree_host_impl), 23 : layer_tree_host_impl_(layer_tree_host_impl),
23 source_frame_number_(-1), 24 source_frame_number_(-1),
24 hud_layer_(0), 25 hud_layer_(0),
25 root_scroll_layer_(NULL), 26 root_scroll_layer_(NULL),
26 currently_scrolling_layer_(NULL), 27 currently_scrolling_layer_(NULL),
27 root_layer_scroll_offset_delegate_(NULL), 28 root_layer_scroll_offset_delegate_(NULL),
28 background_color_(0), 29 background_color_(0),
29 has_transparent_background_(false), 30 has_transparent_background_(false),
31 page_scale_layer_(NULL),
32 inner_viewport_scroll_layer_(NULL),
33 outer_viewport_scroll_layer_(NULL),
30 page_scale_factor_(1), 34 page_scale_factor_(1),
31 page_scale_delta_(1), 35 page_scale_delta_(1),
32 sent_page_scale_delta_(1), 36 sent_page_scale_delta_(1),
33 min_page_scale_factor_(0), 37 min_page_scale_factor_(0),
34 max_page_scale_factor_(0), 38 max_page_scale_factor_(0),
35 scrolling_layer_id_from_previous_tree_(0), 39 scrolling_layer_id_from_previous_tree_(0),
36 contents_textures_purged_(false), 40 contents_textures_purged_(false),
37 viewport_size_invalid_(false), 41 viewport_size_invalid_(false),
38 needs_update_draw_properties_(true), 42 needs_update_draw_properties_(true),
39 needs_full_tree_sync_(true) { 43 needs_full_tree_sync_(true) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); 112 DCHECK_EQ(ui_resource_request_queue_.size(), 0u);
109 113
110 target_tree->SetLatencyInfo(latency_info_); 114 target_tree->SetLatencyInfo(latency_info_);
111 latency_info_.Clear(); 115 latency_info_.Clear();
112 target_tree->SetPageScaleFactorAndLimits( 116 target_tree->SetPageScaleFactorAndLimits(
113 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); 117 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor());
114 target_tree->SetPageScaleDelta( 118 target_tree->SetPageScaleDelta(
115 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); 119 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta());
116 target_tree->set_sent_page_scale_delta(1); 120 target_tree->set_sent_page_scale_delta(1);
117 121
122 if (settings().use_pinch_virtual_viewport) {
123 target_tree->SetViewportLayersFromIds(
124 page_scale_layer_->id(),
125 inner_viewport_scroll_layer_->id(),
126 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id()
127 : Layer::INVALID_ID);
128 }
118 // This should match the property synchronization in 129 // This should match the property synchronization in
119 // LayerTreeHost::finishCommitOnImplThread(). 130 // LayerTreeHost::finishCommitOnImplThread().
120 target_tree->set_source_frame_number(source_frame_number()); 131 target_tree->set_source_frame_number(source_frame_number());
121 target_tree->set_background_color(background_color()); 132 target_tree->set_background_color(background_color());
122 target_tree->set_has_transparent_background(has_transparent_background()); 133 target_tree->set_has_transparent_background(has_transparent_background());
123 134
124 if (ContentsTexturesPurged()) 135 if (ContentsTexturesPurged())
125 target_tree->SetContentsTexturesPurged(); 136 target_tree->SetContentsTexturesPurged();
126 else 137 else
127 target_tree->ResetContentsTexturesPurged(); 138 target_tree->ResetContentsTexturesPurged();
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 261
251 void LayerTreeImpl::ApplyScrollDeltasSinceBeginFrame() { 262 void LayerTreeImpl::ApplyScrollDeltasSinceBeginFrame() {
252 DCHECK(IsPendingTree()); 263 DCHECK(IsPendingTree());
253 if (!root_layer()) 264 if (!root_layer())
254 return; 265 return;
255 266
256 LayerTreeHostCommon::CallFunctionForSubtree( 267 LayerTreeHostCommon::CallFunctionForSubtree(
257 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginFrameTo)); 268 root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginFrameTo));
258 } 269 }
259 270
271 void LayerTreeImpl::SetViewportLayersFromIds(
272 int page_scale_layer_id,
273 int inner_viewport_scroll_layer_id,
274 int outer_viewport_scroll_layer_id) {
275 page_scale_layer_ = LayerById(page_scale_layer_id);
276 DCHECK(page_scale_layer_);
277
278 inner_viewport_scroll_layer_ =
279 LayerById(inner_viewport_scroll_layer_id);
280 DCHECK(inner_viewport_scroll_layer_);
281
282 outer_viewport_scroll_layer_ =
283 LayerById(outer_viewport_scroll_layer_id);
284 DCHECK(outer_viewport_scroll_layer_ ||
285 outer_viewport_scroll_layer_id == Layer::INVALID_ID);
286 }
287
288 void LayerTreeImpl::ClearViewportLayers() {
289 page_scale_layer_ = 0;
enne (OOO) 2013/09/12 18:57:02 s/0/NULL/g
wjmaclean 2013/09/12 19:06:17 Done.
290 inner_viewport_scroll_layer_ = 0;
291 outer_viewport_scroll_layer_ = 0;
292 }
293
260 // TODO(wjmaclean) This needs to go away, and be replaced with a single core 294 // TODO(wjmaclean) This needs to go away, and be replaced with a single core
261 // of login that works for both scrollbar layer types. This is already planned 295 // of login that works for both scrollbar layer types. This is already planned
262 // as part of the larger pinch-zoom re-factoring viewport. 296 // as part of the larger pinch-zoom re-factoring viewport.
263 void LayerTreeImpl::UpdateSolidColorScrollbars() { 297 void LayerTreeImpl::UpdateSolidColorScrollbars() {
264 DCHECK(settings().solid_color_scrollbars); 298 DCHECK(settings().solid_color_scrollbars);
265 299
266 LayerImpl* root_scroll = RootScrollLayer(); 300 LayerImpl* root_scroll = RootScrollLayer();
267 DCHECK(root_scroll); 301 DCHECK(root_scroll);
268 DCHECK(IsActiveTree()); 302 DCHECK(IsActiveTree());
269 303
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 if (!root_layer()) 343 if (!root_layer())
310 return; 344 return;
311 345
312 { 346 {
313 TRACE_EVENT2("cc", 347 TRACE_EVENT2("cc",
314 "LayerTreeImpl::UpdateDrawProperties", 348 "LayerTreeImpl::UpdateDrawProperties",
315 "IsActive", 349 "IsActive",
316 IsActiveTree(), 350 IsActiveTree(),
317 "SourceFrameNumber", 351 "SourceFrameNumber",
318 source_frame_number_); 352 source_frame_number_);
353 LayerImpl* page_scale_layer =
354 page_scale_layer_ ? page_scale_layer_ : RootContainerLayer();
319 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs( 355 LayerTreeHostCommon::CalcDrawPropsImplInputs inputs(
320 root_layer(), 356 root_layer(),
321 DrawViewportSize(), 357 DrawViewportSize(),
322 layer_tree_host_impl_->DrawTransform(), 358 layer_tree_host_impl_->DrawTransform(),
323 device_scale_factor(), 359 device_scale_factor(),
324 total_page_scale_factor(), 360 total_page_scale_factor(),
325 root_scroll_layer_ ? root_scroll_layer_->parent() : NULL, 361 page_scale_layer,
326 MaxTextureSize(), 362 MaxTextureSize(),
327 settings().can_use_lcd_text, 363 settings().can_use_lcd_text,
328 settings().layer_transforms_should_scale_layer_contents, 364 settings().layer_transforms_should_scale_layer_contents,
329 &render_surface_layer_list_); 365 &render_surface_layer_list_);
330 LayerTreeHostCommon::CalculateDrawProperties(&inputs); 366 LayerTreeHostCommon::CalculateDrawProperties(&inputs);
331 } 367 }
332 368
333 DCHECK(!needs_update_draw_properties_) << 369 DCHECK(!needs_update_draw_properties_) <<
334 "CalcDrawProperties should not set_needs_update_draw_properties()"; 370 "CalcDrawProperties should not set_needs_update_draw_properties()";
335 } 371 }
(...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() 703 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest()
668 const { 704 const {
669 // Only the active tree needs to know about layers with copy requests, as 705 // Only the active tree needs to know about layers with copy requests, as
670 // they are aborted if not serviced during draw. 706 // they are aborted if not serviced during draw.
671 DCHECK(IsActiveTree()); 707 DCHECK(IsActiveTree());
672 708
673 return layers_with_copy_output_request_; 709 return layers_with_copy_output_request_;
674 } 710 }
675 711
676 } // namespace cc 712 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698