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_host_impl.h" | 5 #include "cc/trees/layer_tree_host_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 2197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2208 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), | 2208 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
2209 "LayerTreeHostImpl::SetLayerTreeMutator"); | 2209 "LayerTreeHostImpl::SetLayerTreeMutator"); |
2210 mutator_ = std::move(mutator); | 2210 mutator_ = std::move(mutator); |
2211 mutator_->SetClient(this); | 2211 mutator_->SetClient(this); |
2212 } | 2212 } |
2213 | 2213 |
2214 LayerImpl* LayerTreeHostImpl::ViewportMainScrollLayer() { | 2214 LayerImpl* LayerTreeHostImpl::ViewportMainScrollLayer() { |
2215 return viewport()->MainScrollLayer(); | 2215 return viewport()->MainScrollLayer(); |
2216 } | 2216 } |
2217 | 2217 |
| 2218 void LayerTreeHostImpl::DidChangeScrollbarVisibility() { |
| 2219 client_->SetNeedsCommitOnImplThread(); |
| 2220 } |
| 2221 |
2218 void LayerTreeHostImpl::CleanUpTileManagerAndUIResources() { | 2222 void LayerTreeHostImpl::CleanUpTileManagerAndUIResources() { |
2219 ClearUIResources(); | 2223 ClearUIResources(); |
2220 tile_manager_.FinishTasksAndCleanUp(); | 2224 tile_manager_.FinishTasksAndCleanUp(); |
2221 resource_pool_ = nullptr; | 2225 resource_pool_ = nullptr; |
2222 single_thread_synchronous_task_graph_runner_ = nullptr; | 2226 single_thread_synchronous_task_graph_runner_ = nullptr; |
2223 image_decode_controller_ = nullptr; | 2227 image_decode_controller_ = nullptr; |
2224 | 2228 |
2225 // We've potentially just freed a large number of resources on our various | 2229 // We've potentially just freed a large number of resources on our various |
2226 // contexts. Flushing now helps ensure these are cleaned up quickly | 2230 // contexts. Flushing now helps ensure these are cleaned up quickly |
2227 // preventing driver cache growth. See crbug.com/643251 | 2231 // preventing driver cache growth. See crbug.com/643251 |
(...skipping 1108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3336 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, | 3340 static void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, |
3337 LayerTreeImpl* tree_impl) { | 3341 LayerTreeImpl* tree_impl) { |
3338 if (tree_impl->LayerListIsEmpty()) | 3342 if (tree_impl->LayerListIsEmpty()) |
3339 return; | 3343 return; |
3340 | 3344 |
3341 int inner_viewport_layer_id = | 3345 int inner_viewport_layer_id = |
3342 tree_impl->InnerViewportScrollLayer() | 3346 tree_impl->InnerViewportScrollLayer() |
3343 ? tree_impl->InnerViewportScrollLayer()->id() | 3347 ? tree_impl->InnerViewportScrollLayer()->id() |
3344 : Layer::INVALID_ID; | 3348 : Layer::INVALID_ID; |
3345 | 3349 |
3346 return tree_impl->property_trees()->scroll_tree.CollectScrollDeltas( | 3350 tree_impl->property_trees()->scroll_tree.CollectScrollDeltas( |
3347 scroll_info, inner_viewport_layer_id); | 3351 scroll_info, inner_viewport_layer_id); |
3348 } | 3352 } |
3349 | 3353 |
| 3354 static void CollectScrollbarUpdates( |
| 3355 ScrollAndScaleSet* scroll_info, |
| 3356 std::unordered_map<int, std::unique_ptr<ScrollbarAnimationController>>* |
| 3357 controllers) { |
| 3358 scroll_info->scrollbars.reserve(controllers->size()); |
| 3359 for (auto& pair : *controllers) { |
| 3360 scroll_info->scrollbars.push_back(LayerTreeHostCommon::ScrollbarsUpdateInfo( |
| 3361 pair.first, pair.second->ScrollbarsHidden())); |
| 3362 } |
| 3363 } |
| 3364 |
3350 std::unique_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() { | 3365 std::unique_ptr<ScrollAndScaleSet> LayerTreeHostImpl::ProcessScrollDeltas() { |
3351 std::unique_ptr<ScrollAndScaleSet> scroll_info(new ScrollAndScaleSet()); | 3366 std::unique_ptr<ScrollAndScaleSet> scroll_info(new ScrollAndScaleSet()); |
3352 | 3367 |
3353 CollectScrollDeltas(scroll_info.get(), active_tree_.get()); | 3368 CollectScrollDeltas(scroll_info.get(), active_tree_.get()); |
| 3369 CollectScrollbarUpdates(scroll_info.get(), &scrollbar_animation_controllers_); |
3354 scroll_info->page_scale_delta = | 3370 scroll_info->page_scale_delta = |
3355 active_tree_->page_scale_factor()->PullDeltaForMainThread(); | 3371 active_tree_->page_scale_factor()->PullDeltaForMainThread(); |
3356 scroll_info->top_controls_delta = | 3372 scroll_info->top_controls_delta = |
3357 active_tree()->top_controls_shown_ratio()->PullDeltaForMainThread(); | 3373 active_tree()->top_controls_shown_ratio()->PullDeltaForMainThread(); |
3358 scroll_info->elastic_overscroll_delta = | 3374 scroll_info->elastic_overscroll_delta = |
3359 active_tree_->elastic_overscroll()->PullDeltaForMainThread(); | 3375 active_tree_->elastic_overscroll()->PullDeltaForMainThread(); |
3360 scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_); | 3376 scroll_info->swap_promises.swap(swap_promises_for_main_thread_scroll_update_); |
3361 | 3377 |
3362 return scroll_info; | 3378 return scroll_info; |
3363 } | 3379 } |
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4081 if (is_visible) { | 4097 if (is_visible) { |
4082 worker_context_visibility_ = | 4098 worker_context_visibility_ = |
4083 worker_context->CacheController()->ClientBecameVisible(); | 4099 worker_context->CacheController()->ClientBecameVisible(); |
4084 } else { | 4100 } else { |
4085 worker_context->CacheController()->ClientBecameNotVisible( | 4101 worker_context->CacheController()->ClientBecameNotVisible( |
4086 std::move(worker_context_visibility_)); | 4102 std::move(worker_context_visibility_)); |
4087 } | 4103 } |
4088 } | 4104 } |
4089 | 4105 |
4090 } // namespace cc | 4106 } // namespace cc |
OLD | NEW |