| 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 "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/base/math_util.h" | 10 #include "cc/base/math_util.h" |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 113 | 113 |
| 114 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { | 114 void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) { |
| 115 // The request queue should have been processed and does not require a push. | 115 // The request queue should have been processed and does not require a push. |
| 116 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); | 116 DCHECK_EQ(ui_resource_request_queue_.size(), 0u); |
| 117 | 117 |
| 118 if (next_activation_forces_redraw_) { | 118 if (next_activation_forces_redraw_) { |
| 119 layer_tree_host_impl_->SetFullRootLayerDamage(); | 119 layer_tree_host_impl_->SetFullRootLayerDamage(); |
| 120 next_activation_forces_redraw_ = false; | 120 next_activation_forces_redraw_ = false; |
| 121 } | 121 } |
| 122 | 122 |
| 123 target_tree->SetLatencyInfo(latency_info_); | |
| 124 latency_info_.Clear(); | |
| 125 | |
| 126 target_tree->PassSwapPromises(&swap_promise_list_); | 123 target_tree->PassSwapPromises(&swap_promise_list_); |
| 127 | 124 |
| 128 target_tree->SetPageScaleFactorAndLimits( | 125 target_tree->SetPageScaleFactorAndLimits( |
| 129 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); | 126 page_scale_factor(), min_page_scale_factor(), max_page_scale_factor()); |
| 130 target_tree->SetPageScaleDelta( | 127 target_tree->SetPageScaleDelta( |
| 131 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); | 128 target_tree->page_scale_delta() / target_tree->sent_page_scale_delta()); |
| 132 target_tree->set_sent_page_scale_delta(1); | 129 target_tree->set_sent_page_scale_delta(1); |
| 133 | 130 |
| 134 if (settings().use_pinch_virtual_viewport) { | 131 if (settings().use_pinch_virtual_viewport) { |
| 135 target_tree->SetViewportLayersFromIds( | 132 target_tree->SetViewportLayersFromIds( |
| (...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 457 | 454 |
| 458 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { | 455 void LayerTreeImpl::UnregisterLayer(LayerImpl* layer) { |
| 459 DCHECK(LayerById(layer->id())); | 456 DCHECK(LayerById(layer->id())); |
| 460 layer_id_map_.erase(layer->id()); | 457 layer_id_map_.erase(layer->id()); |
| 461 } | 458 } |
| 462 | 459 |
| 463 void LayerTreeImpl::PushPersistedState(LayerTreeImpl* pending_tree) { | 460 void LayerTreeImpl::PushPersistedState(LayerTreeImpl* pending_tree) { |
| 464 pending_tree->SetCurrentlyScrollingLayer( | 461 pending_tree->SetCurrentlyScrollingLayer( |
| 465 LayerTreeHostCommon::FindLayerInSubtree(pending_tree->root_layer(), | 462 LayerTreeHostCommon::FindLayerInSubtree(pending_tree->root_layer(), |
| 466 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0)); | 463 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0)); |
| 467 pending_tree->SetLatencyInfo(latency_info_); | |
| 468 latency_info_.Clear(); | |
| 469 } | 464 } |
| 470 | 465 |
| 471 static void DidBecomeActiveRecursive(LayerImpl* layer) { | 466 static void DidBecomeActiveRecursive(LayerImpl* layer) { |
| 472 layer->DidBecomeActive(); | 467 layer->DidBecomeActive(); |
| 473 for (size_t i = 0; i < layer->children().size(); ++i) | 468 for (size_t i = 0; i < layer->children().size(); ++i) |
| 474 DidBecomeActiveRecursive(layer->children()[i]); | 469 DidBecomeActiveRecursive(layer->children()[i]); |
| 475 } | 470 } |
| 476 | 471 |
| 477 void LayerTreeImpl::DidBecomeActive() { | 472 void LayerTreeImpl::DidBecomeActive() { |
| 478 if (!root_layer()) | 473 if (!root_layer()) |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 | 687 |
| 693 gfx::Vector2dF original_viewport_size = | 688 gfx::Vector2dF original_viewport_size = |
| 694 gfx::RectF(root_container->bounds()).bottom_right() - | 689 gfx::RectF(root_container->bounds()).bottom_right() - |
| 695 gfx::PointF(); | 690 gfx::PointF(); |
| 696 original_viewport_size.Scale(1 / page_scale_factor()); | 691 original_viewport_size.Scale(1 / page_scale_factor()); |
| 697 | 692 |
| 698 root_scroll->SetFixedContainerSizeDelta( | 693 root_scroll->SetFixedContainerSizeDelta( |
| 699 scrollable_viewport_size - original_viewport_size); | 694 scrollable_viewport_size - original_viewport_size); |
| 700 } | 695 } |
| 701 | 696 |
| 702 void LayerTreeImpl::SetLatencyInfo(const ui::LatencyInfo& latency_info) { | |
| 703 latency_info_.MergeWith(latency_info); | |
| 704 } | |
| 705 | |
| 706 const ui::LatencyInfo& LayerTreeImpl::GetLatencyInfo() { | |
| 707 return latency_info_; | |
| 708 } | |
| 709 | |
| 710 void LayerTreeImpl::ClearLatencyInfo() { | |
| 711 latency_info_.Clear(); | |
| 712 } | |
| 713 | |
| 714 void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) { | 697 void LayerTreeImpl::QueueSwapPromise(scoped_ptr<SwapPromise> swap_promise) { |
| 715 DCHECK(swap_promise); | 698 DCHECK(swap_promise); |
| 716 if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) | 699 if (swap_promise_list_.size() > kMaxQueuedSwapPromiseNumber) |
| 717 BreakSwapPromises(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW); | 700 BreakSwapPromises(SwapPromise::SWAP_PROMISE_LIST_OVERFLOW); |
| 718 swap_promise_list_.push_back(swap_promise.Pass()); | 701 swap_promise_list_.push_back(swap_promise.Pass()); |
| 719 } | 702 } |
| 720 | 703 |
| 721 void LayerTreeImpl::PassSwapPromises( | 704 void LayerTreeImpl::PassSwapPromises( |
| 722 ScopedPtrVector<SwapPromise>* new_swap_promise) { | 705 ScopedPtrVector<SwapPromise>* new_swap_promise) { |
| 723 swap_promise_list_.insert_and_take(swap_promise_list_.end(), | 706 swap_promise_list_.insert_and_take(swap_promise_list_.end(), |
| 724 *new_swap_promise); | 707 *new_swap_promise); |
| 725 new_swap_promise->clear(); | 708 new_swap_promise->clear(); |
| 726 } | 709 } |
| 727 | 710 |
| 728 void LayerTreeImpl::FinishSwapPromises() { | 711 void LayerTreeImpl::FinishSwapPromises(CompositorFrameMetadata* metadata) { |
| 729 for (size_t i = 0; i < swap_promise_list_.size(); i++) | 712 for (size_t i = 0; i < swap_promise_list_.size(); i++) |
| 730 swap_promise_list_[i]->DidSwap(); | 713 swap_promise_list_[i]->DidSwap(metadata); |
| 731 swap_promise_list_.clear(); | 714 swap_promise_list_.clear(); |
| 732 } | 715 } |
| 733 | 716 |
| 734 void LayerTreeImpl::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { | 717 void LayerTreeImpl::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { |
| 735 for (size_t i = 0; i < swap_promise_list_.size(); i++) | 718 for (size_t i = 0; i < swap_promise_list_.size(); i++) |
| 736 swap_promise_list_[i]->DidNotSwap(reason); | 719 swap_promise_list_[i]->DidNotSwap(reason); |
| 737 swap_promise_list_.clear(); | 720 swap_promise_list_.clear(); |
| 738 } | 721 } |
| 739 | 722 |
| 740 void LayerTreeImpl::DidModifyTilePriorities() { | 723 void LayerTreeImpl::DidModifyTilePriorities() { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() | 789 const std::vector<LayerImpl*> LayerTreeImpl::LayersWithCopyOutputRequest() |
| 807 const { | 790 const { |
| 808 // Only the active tree needs to know about layers with copy requests, as | 791 // Only the active tree needs to know about layers with copy requests, as |
| 809 // they are aborted if not serviced during draw. | 792 // they are aborted if not serviced during draw. |
| 810 DCHECK(IsActiveTree()); | 793 DCHECK(IsActiveTree()); |
| 811 | 794 |
| 812 return layers_with_copy_output_request_; | 795 return layers_with_copy_output_request_; |
| 813 } | 796 } |
| 814 | 797 |
| 815 } // namespace cc | 798 } // namespace cc |
| OLD | NEW |