OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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))) { |
491 DidUpdatePageScale(); | 496 DidUpdatePageScale(); |
497 if (PageScaleLayer()) { | |
498 UpdatePageScaleFactorInPropertyTrees( | |
499 property_trees(), PageScaleLayer(), current_page_scale_factor(), | |
500 device_scale_factor(), layer_tree_host_impl_->DrawTransform()); | |
501 } else { | |
502 DCHECK(!root_layer_ || active_page_scale == 1); | |
503 } | |
504 } | |
492 } | 505 } |
493 | 506 |
494 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, | 507 void LayerTreeImpl::PushPageScaleFromMainThread(float page_scale_factor, |
495 float min_page_scale_factor, | 508 float min_page_scale_factor, |
496 float max_page_scale_factor) { | 509 float max_page_scale_factor) { |
497 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, | 510 PushPageScaleFactorAndLimits(&page_scale_factor, min_page_scale_factor, |
498 max_page_scale_factor); | 511 max_page_scale_factor); |
499 } | 512 } |
500 | 513 |
501 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, | 514 void LayerTreeImpl::PushPageScaleFactorAndLimits(const float* page_scale_factor, |
502 float min_page_scale_factor, | 515 float min_page_scale_factor, |
503 float max_page_scale_factor) { | 516 float max_page_scale_factor) { |
504 DCHECK(page_scale_factor || IsActiveTree()); | 517 DCHECK(page_scale_factor || IsActiveTree()); |
505 bool changed_page_scale = false; | 518 bool changed_page_scale = false; |
519 | |
520 changed_page_scale |= | |
521 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor); | |
522 | |
506 if (page_scale_factor) { | 523 if (page_scale_factor) { |
507 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree()); | 524 DCHECK(!IsActiveTree() || !layer_tree_host_impl_->pending_tree()); |
508 changed_page_scale |= page_scale_factor_->Delta() != 1.f; | 525 changed_page_scale |= page_scale_factor_->Delta() != 1.f; |
509 // TODO(enne): Once CDP goes away, ignore this call below. The only time | 526 // 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 | 527 // 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. | 528 // compositor thread after the begin frame, which is the delta check above. |
512 changed_page_scale |= | 529 changed_page_scale |= |
513 page_scale_factor_->PushFromMainThread(*page_scale_factor); | 530 page_scale_factor_->PushFromMainThread(*page_scale_factor); |
514 } | 531 } |
532 | |
515 if (IsActiveTree()) { | 533 if (IsActiveTree()) { |
516 // TODO(enne): Pushing from pending to active should never require | 534 // TODO(enne): Pushing from pending to active should never require |
517 // DidUpdatePageScale. The values should already be set by the fully | 535 // DidUpdatePageScale. The values should already be set by the fully |
518 // computed property trees being synced from one tree to another. Remove | 536 // computed property trees being synced from one tree to another. Remove |
519 // this once CDP goes away. | 537 // this once CDP goes away. |
520 changed_page_scale |= page_scale_factor_->PushPendingToActive(); | 538 changed_page_scale |= page_scale_factor_->PushPendingToActive(); |
521 } | 539 } |
522 | 540 |
523 changed_page_scale |= | |
524 SetPageScaleFactorLimits(min_page_scale_factor, max_page_scale_factor); | |
525 | |
526 if (changed_page_scale) | 541 if (changed_page_scale) |
527 DidUpdatePageScale(); | 542 DidUpdatePageScale(); |
543 | |
544 if (page_scale_factor) { // && !property_trees()->needs_rebuild) { | |
ajuma
2016/02/10 22:30:19
The commented-out code needs to be removed.
| |
545 if (PageScaleLayer()) { | |
546 UpdatePageScaleFactorInPropertyTrees( | |
547 property_trees(), PageScaleLayer(), current_page_scale_factor(), | |
548 device_scale_factor(), layer_tree_host_impl_->DrawTransform()); | |
549 } else { | |
550 DCHECK(!root_layer_ || *page_scale_factor == 1); | |
551 } | |
552 } | |
528 } | 553 } |
529 | 554 |
530 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) { | 555 void LayerTreeImpl::set_top_controls_shrink_blink_size(bool shrink) { |
531 if (top_controls_shrink_blink_size_ == shrink) | 556 if (top_controls_shrink_blink_size_ == shrink) |
532 return; | 557 return; |
533 | 558 |
534 top_controls_shrink_blink_size_ = shrink; | 559 top_controls_shrink_blink_size_ = shrink; |
535 if (IsActiveTree()) | 560 if (IsActiveTree()) |
536 layer_tree_host_impl_->UpdateViewportContainerSizes(); | 561 layer_tree_host_impl_->UpdateViewportContainerSizes(); |
537 } | 562 } |
(...skipping 1512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2050 const gfx::BoxF& box, | 2075 const gfx::BoxF& box, |
2051 gfx::BoxF* bounds) const { | 2076 gfx::BoxF* bounds) const { |
2052 *bounds = gfx::BoxF(); | 2077 *bounds = gfx::BoxF(); |
2053 return layer_tree_host_impl_->animation_host() | 2078 return layer_tree_host_impl_->animation_host() |
2054 ? layer_tree_host_impl_->animation_host() | 2079 ? layer_tree_host_impl_->animation_host() |
2055 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) | 2080 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) |
2056 : true; | 2081 : true; |
2057 } | 2082 } |
2058 | 2083 |
2059 } // namespace cc | 2084 } // namespace cc |
OLD | NEW |