| 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 <limits> | 7 #include <limits> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 | 101 |
| 102 LayerTreeImpl::~LayerTreeImpl() { | 102 LayerTreeImpl::~LayerTreeImpl() { |
| 103 BreakSwapPromises(SwapPromise::SWAP_FAILS); | 103 BreakSwapPromises(SwapPromise::SWAP_FAILS); |
| 104 | 104 |
| 105 // Need to explicitly clear the tree prior to destroying this so that | 105 // Need to explicitly clear the tree prior to destroying this so that |
| 106 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. | 106 // the LayerTreeImpl pointer is still valid in the LayerImpl dtor. |
| 107 DCHECK(!root_layer_); | 107 DCHECK(!root_layer_); |
| 108 DCHECK(layers_with_copy_output_request_.empty()); | 108 DCHECK(layers_with_copy_output_request_.empty()); |
| 109 } | 109 } |
| 110 | 110 |
| 111 void LayerTreeImpl::Shutdown() { root_layer_.reset(); } | 111 void LayerTreeImpl::Shutdown() { |
| 112 root_layer_ = nullptr; |
| 113 } |
| 112 | 114 |
| 113 void LayerTreeImpl::ReleaseResources() { | 115 void LayerTreeImpl::ReleaseResources() { |
| 114 if (root_layer_) | 116 if (root_layer_) |
| 115 ReleaseResourcesRecursive(root_layer_.get()); | 117 ReleaseResourcesRecursive(root_layer_.get()); |
| 116 } | 118 } |
| 117 | 119 |
| 118 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { | 120 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { |
| 119 if (inner_viewport_scroll_layer_) | 121 if (inner_viewport_scroll_layer_) |
| 120 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 122 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
| 121 if (outer_viewport_scroll_layer_) | 123 if (outer_viewport_scroll_layer_) |
| 122 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 124 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
| 123 inner_viewport_scroll_delegate_proxy_.reset(); | 125 inner_viewport_scroll_delegate_proxy_ = nullptr; |
| 124 outer_viewport_scroll_delegate_proxy_.reset(); | 126 outer_viewport_scroll_delegate_proxy_ = nullptr; |
| 125 | 127 |
| 126 root_layer_ = layer.Pass(); | 128 root_layer_ = layer.Pass(); |
| 127 currently_scrolling_layer_ = NULL; | 129 currently_scrolling_layer_ = NULL; |
| 128 inner_viewport_scroll_layer_ = NULL; | 130 inner_viewport_scroll_layer_ = NULL; |
| 129 outer_viewport_scroll_layer_ = NULL; | 131 outer_viewport_scroll_layer_ = NULL; |
| 130 page_scale_layer_ = NULL; | 132 page_scale_layer_ = NULL; |
| 131 | 133 |
| 132 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); | 134 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); |
| 133 } | 135 } |
| 134 | 136 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 } | 176 } |
| 175 | 177 |
| 176 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { | 178 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { |
| 177 // Clear all data structures that have direct references to the layer tree. | 179 // Clear all data structures that have direct references to the layer tree. |
| 178 scrolling_layer_id_from_previous_tree_ = | 180 scrolling_layer_id_from_previous_tree_ = |
| 179 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; | 181 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; |
| 180 if (inner_viewport_scroll_layer_) | 182 if (inner_viewport_scroll_layer_) |
| 181 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 183 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
| 182 if (outer_viewport_scroll_layer_) | 184 if (outer_viewport_scroll_layer_) |
| 183 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 185 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
| 184 inner_viewport_scroll_delegate_proxy_.reset(); | 186 inner_viewport_scroll_delegate_proxy_ = nullptr; |
| 185 outer_viewport_scroll_delegate_proxy_.reset(); | 187 outer_viewport_scroll_delegate_proxy_ = nullptr; |
| 186 inner_viewport_scroll_layer_ = NULL; | 188 inner_viewport_scroll_layer_ = NULL; |
| 187 outer_viewport_scroll_layer_ = NULL; | 189 outer_viewport_scroll_layer_ = NULL; |
| 188 page_scale_layer_ = NULL; | 190 page_scale_layer_ = NULL; |
| 189 currently_scrolling_layer_ = NULL; | 191 currently_scrolling_layer_ = NULL; |
| 190 | 192 |
| 191 render_surface_layer_list_.clear(); | 193 render_surface_layer_list_.clear(); |
| 192 set_needs_update_draw_properties(); | 194 set_needs_update_draw_properties(); |
| 193 return root_layer_.Pass(); | 195 return root_layer_.Pass(); |
| 194 } | 196 } |
| 195 | 197 |
| (...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 776 LayerTreeImpl::CreateScrollbarAnimationController(LayerImpl* scrolling_layer) { | 778 LayerTreeImpl::CreateScrollbarAnimationController(LayerImpl* scrolling_layer) { |
| 777 DCHECK(settings().scrollbar_fade_delay_ms); | 779 DCHECK(settings().scrollbar_fade_delay_ms); |
| 778 DCHECK(settings().scrollbar_fade_duration_ms); | 780 DCHECK(settings().scrollbar_fade_duration_ms); |
| 779 base::TimeDelta delay = | 781 base::TimeDelta delay = |
| 780 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_delay_ms); | 782 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_delay_ms); |
| 781 base::TimeDelta duration = | 783 base::TimeDelta duration = |
| 782 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_duration_ms); | 784 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_duration_ms); |
| 783 switch (settings().scrollbar_animator) { | 785 switch (settings().scrollbar_animator) { |
| 784 case LayerTreeSettings::LinearFade: { | 786 case LayerTreeSettings::LinearFade: { |
| 785 return ScrollbarAnimationControllerLinearFade::Create( | 787 return ScrollbarAnimationControllerLinearFade::Create( |
| 786 scrolling_layer, layer_tree_host_impl_, delay, duration) | 788 scrolling_layer, layer_tree_host_impl_, delay, duration); |
| 787 .PassAs<ScrollbarAnimationController>(); | |
| 788 } | 789 } |
| 789 case LayerTreeSettings::Thinning: { | 790 case LayerTreeSettings::Thinning: { |
| 790 return ScrollbarAnimationControllerThinning::Create( | 791 return ScrollbarAnimationControllerThinning::Create( |
| 791 scrolling_layer, layer_tree_host_impl_, delay, duration) | 792 scrolling_layer, layer_tree_host_impl_, delay, duration); |
| 792 .PassAs<ScrollbarAnimationController>(); | |
| 793 } | 793 } |
| 794 case LayerTreeSettings::NoAnimator: | 794 case LayerTreeSettings::NoAnimator: |
| 795 NOTREACHED(); | 795 NOTREACHED(); |
| 796 break; | 796 break; |
| 797 } | 797 } |
| 798 return scoped_ptr<ScrollbarAnimationController>(); | 798 return nullptr; |
| 799 } | 799 } |
| 800 | 800 |
| 801 void LayerTreeImpl::DidAnimateScrollOffset() { | 801 void LayerTreeImpl::DidAnimateScrollOffset() { |
| 802 layer_tree_host_impl_->DidAnimateScrollOffset(); | 802 layer_tree_host_impl_->DidAnimateScrollOffset(); |
| 803 } | 803 } |
| 804 | 804 |
| 805 bool LayerTreeImpl::use_gpu_rasterization() const { | 805 bool LayerTreeImpl::use_gpu_rasterization() const { |
| 806 return layer_tree_host_impl_->use_gpu_rasterization(); | 806 return layer_tree_host_impl_->use_gpu_rasterization(); |
| 807 } | 807 } |
| 808 | 808 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 874 if (root_layer_scroll_offset_delegate_ == root_layer_scroll_offset_delegate) | 874 if (root_layer_scroll_offset_delegate_ == root_layer_scroll_offset_delegate) |
| 875 return; | 875 return; |
| 876 | 876 |
| 877 if (!root_layer_scroll_offset_delegate) { | 877 if (!root_layer_scroll_offset_delegate) { |
| 878 // Make sure we remove the proxies from their layers before | 878 // Make sure we remove the proxies from their layers before |
| 879 // releasing them. | 879 // releasing them. |
| 880 if (InnerViewportScrollLayer()) | 880 if (InnerViewportScrollLayer()) |
| 881 InnerViewportScrollLayer()->SetScrollOffsetDelegate(NULL); | 881 InnerViewportScrollLayer()->SetScrollOffsetDelegate(NULL); |
| 882 if (OuterViewportScrollLayer()) | 882 if (OuterViewportScrollLayer()) |
| 883 OuterViewportScrollLayer()->SetScrollOffsetDelegate(NULL); | 883 OuterViewportScrollLayer()->SetScrollOffsetDelegate(NULL); |
| 884 inner_viewport_scroll_delegate_proxy_.reset(); | 884 inner_viewport_scroll_delegate_proxy_ = nullptr; |
| 885 outer_viewport_scroll_delegate_proxy_.reset(); | 885 outer_viewport_scroll_delegate_proxy_ = nullptr; |
| 886 } | 886 } |
| 887 | 887 |
| 888 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; | 888 root_layer_scroll_offset_delegate_ = root_layer_scroll_offset_delegate; |
| 889 | 889 |
| 890 if (root_layer_scroll_offset_delegate_) { | 890 if (root_layer_scroll_offset_delegate_) { |
| 891 root_layer_scroll_offset_delegate_->UpdateRootLayerState( | 891 root_layer_scroll_offset_delegate_->UpdateRootLayerState( |
| 892 TotalScrollOffset(), | 892 TotalScrollOffset(), |
| 893 TotalMaxScrollOffset(), | 893 TotalMaxScrollOffset(), |
| 894 ScrollableSize(), | 894 ScrollableSize(), |
| 895 total_page_scale_factor(), | 895 total_page_scale_factor(), |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1443 | 1443 |
| 1444 void LayerTreeImpl::InputScrollAnimationFinished() { | 1444 void LayerTreeImpl::InputScrollAnimationFinished() { |
| 1445 layer_tree_host_impl_->ScrollEnd(); | 1445 layer_tree_host_impl_->ScrollEnd(); |
| 1446 } | 1446 } |
| 1447 | 1447 |
| 1448 BlockingTaskRunner* LayerTreeImpl::BlockingMainThreadTaskRunner() const { | 1448 BlockingTaskRunner* LayerTreeImpl::BlockingMainThreadTaskRunner() const { |
| 1449 return proxy()->blocking_main_thread_task_runner(); | 1449 return proxy()->blocking_main_thread_task_runner(); |
| 1450 } | 1450 } |
| 1451 | 1451 |
| 1452 } // namespace cc | 1452 } // namespace cc |
| OLD | NEW |