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() { | 111 void LayerTreeImpl::Shutdown() { root_layer_.reset(); } |
112 root_layer_ = nullptr; | |
113 } | |
114 | 112 |
115 void LayerTreeImpl::ReleaseResources() { | 113 void LayerTreeImpl::ReleaseResources() { |
116 if (root_layer_) | 114 if (root_layer_) |
117 ReleaseResourcesRecursive(root_layer_.get()); | 115 ReleaseResourcesRecursive(root_layer_.get()); |
118 } | 116 } |
119 | 117 |
120 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { | 118 void LayerTreeImpl::SetRootLayer(scoped_ptr<LayerImpl> layer) { |
121 if (inner_viewport_scroll_layer_) | 119 if (inner_viewport_scroll_layer_) |
122 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 120 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
123 if (outer_viewport_scroll_layer_) | 121 if (outer_viewport_scroll_layer_) |
124 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 122 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
125 inner_viewport_scroll_delegate_proxy_ = nullptr; | 123 inner_viewport_scroll_delegate_proxy_.reset(); |
126 outer_viewport_scroll_delegate_proxy_ = nullptr; | 124 outer_viewport_scroll_delegate_proxy_.reset(); |
127 | 125 |
128 root_layer_ = layer.Pass(); | 126 root_layer_ = layer.Pass(); |
129 currently_scrolling_layer_ = NULL; | 127 currently_scrolling_layer_ = NULL; |
130 inner_viewport_scroll_layer_ = NULL; | 128 inner_viewport_scroll_layer_ = NULL; |
131 outer_viewport_scroll_layer_ = NULL; | 129 outer_viewport_scroll_layer_ = NULL; |
132 page_scale_layer_ = NULL; | 130 page_scale_layer_ = NULL; |
133 | 131 |
134 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); | 132 layer_tree_host_impl_->OnCanDrawStateChangedForTree(); |
135 } | 133 } |
136 | 134 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 } | 174 } |
177 | 175 |
178 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { | 176 scoped_ptr<LayerImpl> LayerTreeImpl::DetachLayerTree() { |
179 // Clear all data structures that have direct references to the layer tree. | 177 // Clear all data structures that have direct references to the layer tree. |
180 scrolling_layer_id_from_previous_tree_ = | 178 scrolling_layer_id_from_previous_tree_ = |
181 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; | 179 currently_scrolling_layer_ ? currently_scrolling_layer_->id() : 0; |
182 if (inner_viewport_scroll_layer_) | 180 if (inner_viewport_scroll_layer_) |
183 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 181 inner_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
184 if (outer_viewport_scroll_layer_) | 182 if (outer_viewport_scroll_layer_) |
185 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); | 183 outer_viewport_scroll_layer_->SetScrollOffsetDelegate(NULL); |
186 inner_viewport_scroll_delegate_proxy_ = nullptr; | 184 inner_viewport_scroll_delegate_proxy_.reset(); |
187 outer_viewport_scroll_delegate_proxy_ = nullptr; | 185 outer_viewport_scroll_delegate_proxy_.reset(); |
188 inner_viewport_scroll_layer_ = NULL; | 186 inner_viewport_scroll_layer_ = NULL; |
189 outer_viewport_scroll_layer_ = NULL; | 187 outer_viewport_scroll_layer_ = NULL; |
190 page_scale_layer_ = NULL; | 188 page_scale_layer_ = NULL; |
191 currently_scrolling_layer_ = NULL; | 189 currently_scrolling_layer_ = NULL; |
192 | 190 |
193 render_surface_layer_list_.clear(); | 191 render_surface_layer_list_.clear(); |
194 set_needs_update_draw_properties(); | 192 set_needs_update_draw_properties(); |
195 return root_layer_.Pass(); | 193 return root_layer_.Pass(); |
196 } | 194 } |
197 | 195 |
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
778 LayerTreeImpl::CreateScrollbarAnimationController(LayerImpl* scrolling_layer) { | 776 LayerTreeImpl::CreateScrollbarAnimationController(LayerImpl* scrolling_layer) { |
779 DCHECK(settings().scrollbar_fade_delay_ms); | 777 DCHECK(settings().scrollbar_fade_delay_ms); |
780 DCHECK(settings().scrollbar_fade_duration_ms); | 778 DCHECK(settings().scrollbar_fade_duration_ms); |
781 base::TimeDelta delay = | 779 base::TimeDelta delay = |
782 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_delay_ms); | 780 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_delay_ms); |
783 base::TimeDelta duration = | 781 base::TimeDelta duration = |
784 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_duration_ms); | 782 base::TimeDelta::FromMilliseconds(settings().scrollbar_fade_duration_ms); |
785 switch (settings().scrollbar_animator) { | 783 switch (settings().scrollbar_animator) { |
786 case LayerTreeSettings::LinearFade: { | 784 case LayerTreeSettings::LinearFade: { |
787 return ScrollbarAnimationControllerLinearFade::Create( | 785 return ScrollbarAnimationControllerLinearFade::Create( |
788 scrolling_layer, layer_tree_host_impl_, delay, duration); | 786 scrolling_layer, layer_tree_host_impl_, delay, duration) |
| 787 .PassAs<ScrollbarAnimationController>(); |
789 } | 788 } |
790 case LayerTreeSettings::Thinning: { | 789 case LayerTreeSettings::Thinning: { |
791 return ScrollbarAnimationControllerThinning::Create( | 790 return ScrollbarAnimationControllerThinning::Create( |
792 scrolling_layer, layer_tree_host_impl_, delay, duration); | 791 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 nullptr; | 798 return scoped_ptr<ScrollbarAnimationController>(); |
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_ = nullptr; | 884 inner_viewport_scroll_delegate_proxy_.reset(); |
885 outer_viewport_scroll_delegate_proxy_ = nullptr; | 885 outer_viewport_scroll_delegate_proxy_.reset(); |
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 |