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 |