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

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

Issue 1675963002: Move MaxScrollOffset to property_trees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add DrawFrameWithoutBuildingPropertyTrees, will clean up DrawFrame in next CL Created 4 years, 10 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
« no previous file with comments | « cc/trees/layer_tree_host_unittest_scroll.cc ('k') | cc/trees/property_tree.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 clip_tree->set_needs_update(true); 285 clip_tree->set_needs_update(true);
286 } 286 }
287 } 287 }
288 } 288 }
289 } 289 }
290 290
291 void LayerTreeImpl::UpdatePropertyTreesForBoundsDelta() { 291 void LayerTreeImpl::UpdatePropertyTreesForBoundsDelta() {
292 DCHECK(IsActiveTree()); 292 DCHECK(IsActiveTree());
293 LayerImpl* inner_container = InnerViewportContainerLayer(); 293 LayerImpl* inner_container = InnerViewportContainerLayer();
294 LayerImpl* outer_container = OuterViewportContainerLayer(); 294 LayerImpl* outer_container = OuterViewportContainerLayer();
295 LayerImpl* inner_scroll = InnerViewportScrollLayer();
295 296
296 UpdateClipTreeForBoundsDeltaOnLayer(inner_container, 297 UpdateClipTreeForBoundsDeltaOnLayer(inner_container,
297 &property_trees_.clip_tree); 298 &property_trees_.clip_tree);
298 UpdateClipTreeForBoundsDeltaOnLayer(InnerViewportScrollLayer(), 299 UpdateClipTreeForBoundsDeltaOnLayer(InnerViewportScrollLayer(),
299 &property_trees_.clip_tree); 300 &property_trees_.clip_tree);
300 UpdateClipTreeForBoundsDeltaOnLayer(outer_container, 301 UpdateClipTreeForBoundsDeltaOnLayer(outer_container,
301 &property_trees_.clip_tree); 302 &property_trees_.clip_tree);
302 303
303 TransformTree& transform_tree = property_trees_.transform_tree;
304 if (inner_container) 304 if (inner_container)
305 transform_tree.SetInnerViewportBoundsDelta(inner_container->bounds_delta()); 305 property_trees_.SetInnerViewportContainerBoundsDelta(
306 inner_container->bounds_delta());
306 if (outer_container) 307 if (outer_container)
307 transform_tree.SetOuterViewportBoundsDelta(outer_container->bounds_delta()); 308 property_trees_.SetOuterViewportContainerBoundsDelta(
309 outer_container->bounds_delta());
310 if (inner_scroll)
311 property_trees_.SetInnerViewportScrollBoundsDelta(
312 inner_scroll->bounds_delta());
308 } 313 }
309 314
310 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { 315 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
311 // The request queue should have been processed and does not require a push. 316 // The request queue should have been processed and does not require a push.
312 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); 317 DCHECK_EQ(ui_resource_request_queue_.size(), 0u);
313 318
314 target_tree->SetPropertyTrees(property_trees_); 319 target_tree->SetPropertyTrees(property_trees_);
315 320
316 if (next_activation_forces_redraw_) { 321 if (next_activation_forces_redraw_) {
317 target_tree->ForceRedrawNextActivation(); 322 target_tree->ForceRedrawNextActivation();
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 return; 485 return;
481 LayerTreeHostCommon::CallFunctionForSubtree( 486 LayerTreeHostCommon::CallFunctionForSubtree(
482 root_layer(), [](LayerImpl* layer) { 487 root_layer(), [](LayerImpl* layer) {
483 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded(); 488 layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded();
484 }); 489 });
485 } 490 }
486 491
487 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) { 492 void LayerTreeImpl::SetPageScaleOnActiveTree(float active_page_scale) {
488 DCHECK(IsActiveTree()); 493 DCHECK(IsActiveTree());
489 if (page_scale_factor()->SetCurrent( 494 if (page_scale_factor()->SetCurrent(
490 ClampPageScaleFactorToLimits(active_page_scale))) 495 ClampPageScaleFactorToLimits(active_page_scale))) {
496 if (PageScaleLayer() && !property_trees()->needs_rebuild)
ajuma 2016/02/10 19:08:13 We shouldn't be rebuilding on the compositor threa
497 UpdatePageScaleFactorInPropertyTrees(
498 property_trees(), PageScaleLayer(), current_page_scale_factor(),
499 device_scale_factor(), layer_tree_host_impl_->DrawTransform());
491 DidUpdatePageScale(); 500 DidUpdatePageScale();
501 }
492 } 502 }
493 503
494 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, 504 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor,
495 float min_page_scale_factor, 505 float min_page_scale_factor,
496 float max_page_scale_factor) { 506 float max_page_scale_factor) {
497 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, 507 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor,
498 max_page_scale_factor); 508 max_page_scale_factor);
499 } 509 }
500 510
501 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, 511 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor,
502 float min_page_scale_factor, 512 float min_page_scale_factor,
503 float max_page_scale_factor) { 513 float max_page_scale_factor) {
504 DCHECK(page_scale_factor || IsActiveTree()); 514 DCHECK(page_scale_factor || IsActiveTree());
505 bool changed_page_scale = false; 515 bool changed_page_scale = false;
516
517 changed_page_scale |=
518 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor);
519
506 if (page_scale_factor) { 520 if (page_scale_factor) {
507 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree()); 521 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree());
508 changed_page_scale |= page_scale_factor_->Delta() != 1.f; 522 changed_page_scale |= page_scale_factor_->Delta() != 1.f;
509 // TODO(enne): Once CDP goes away, ignore this call below. The only time 523 // TODO(enne): Once CDP goes away, ignore this call below. The only time
510 // the property trees will differ is if there's been a page scale on the 524 // the property trees will differ is if there's been a page scale on the
511 // compositor thread after the begin frame, which is the delta check above. 525 // compositor thread after the begin frame, which is the delta check above.
512 changed_page_scale |= 526 changed_page_scale |=
513 page_scale_factor_->PushFromMainThread(*page_scale_factor); 527 page_scale_factor_->PushFromMainThread(*page_scale_factor);
514 } 528 }
529
515 if (IsActiveTree()) { 530 if (IsActiveTree()) {
516 // TODO(enne): Pushing from pending to active should never require 531 // TODO(enne): Pushing from pending to active should never require
517 // DidUpdatePageScale. The values should already be set by the fully 532 // DidUpdatePageScale. The values should already be set by the fully
518 // computed property trees being synced from one tree to another. Remove 533 // computed property trees being synced from one tree to another. Remove
519 // this once CDP goes away. 534 // this once CDP goes away.
520 changed_page_scale |= page_scale_factor_->PushPendingToActive(); 535 changed_page_scale |= page_scale_factor_->PushPendingToActive();
521 } 536 }
522 537
523 changed_page_scale |= 538 if (page_scale_factor && !property_trees()->needs_rebuild) {
ajuma 2016/02/10 19:08:14 Here too, we shouldn't be checking for needs_rebui
524 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor); 539 if (PageScaleLayer()) {
540 UpdatePageScaleFactorInPropertyTrees(
541 property_trees(), PageScaleLayer(), current_page_scale_factor(),
542 device_scale_factor(), layer_tree_host_impl_->DrawTransform());
543 } else {
544 DCHECK_EQ(*page_scale_factor, 1);
545 }
546 }
ajuma 2016/02/10 19:08:14 This block needs to happen after the next one (sin
525 547
526 if (changed_page_scale) 548 if (changed_page_scale)
527 DidUpdatePageScale(); 549 DidUpdatePageScale();
528 } 550 }
529 551
530 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) { 552 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) {
531 if (top_controls_shrink_blink_size_ == shrink) 553 if (top_controls_shrink_blink_size_ == shrink)
532 return; 554 return;
533 555
534 top_controls_shrink_blink_size_ = shrink; 556 top_controls_shrink_blink_size_ = shrink;
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after
2050 const gfx::BoxF& box, 2072 const gfx::BoxF& box,
2051 gfx::BoxF* bounds) const { 2073 gfx::BoxF* bounds) const {
2052 *bounds = gfx::BoxF(); 2074 *bounds = gfx::BoxF();
2053 return layer_tree_host_impl_->animation_host() 2075 return layer_tree_host_impl_->animation_host()
2054 ? layer_tree_host_impl_->animation_host() 2076 ? layer_tree_host_impl_->animation_host()
2055 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) 2077 ->TransformAnimationBoundsForBox(layer->id(), box, bounds)
2056 : true; 2078 : true;
2057 } 2079 }
2058 2080
2059 } // namespace cc 2081 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_unittest_scroll.cc ('k') | cc/trees/property_tree.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698