Chromium Code Reviews| 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.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <stack> | 8 #include <stack> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 958 | 958 |
| 959 in_paint_layer_contents_ = false; | 959 in_paint_layer_contents_ = false; |
| 960 | 960 |
| 961 occlusion_tracker.overdraw_metrics()->RecordMetrics(this); | 961 occlusion_tracker.overdraw_metrics()->RecordMetrics(this); |
| 962 } | 962 } |
| 963 | 963 |
| 964 void LayerTreeHost::ApplyScrollAndScale(const ScrollAndScaleSet& info) { | 964 void LayerTreeHost::ApplyScrollAndScale(const ScrollAndScaleSet& info) { |
| 965 if (!root_layer_.get()) | 965 if (!root_layer_.get()) |
| 966 return; | 966 return; |
| 967 | 967 |
| 968 const bool has_scrolls = !info.scrolls.empty(); | |
|
enne (OOO)
2013/07/29 17:46:31
...or page scale delta != 1?
| |
| 969 if (has_scrolls) { | |
| 970 // We use async events here because we want to conditionally trace. This | |
| 971 // is too spammy otherwise. | |
| 972 TRACE_EVENT_ASYNC_BEGIN0( | |
| 973 "impl-scroll", | |
| 974 "LayerTreeHost::ApplyScrollAndScale", | |
| 975 this); | |
| 976 } | |
| 977 | |
| 968 Layer* root_scroll_layer = FindFirstScrollableLayer(root_layer_.get()); | 978 Layer* root_scroll_layer = FindFirstScrollableLayer(root_layer_.get()); |
| 969 gfx::Vector2d root_scroll_delta; | 979 gfx::Vector2d root_scroll_delta; |
| 970 | 980 |
| 971 for (size_t i = 0; i < info.scrolls.size(); ++i) { | 981 for (size_t i = 0; i < info.scrolls.size(); ++i) { |
| 972 Layer* layer = | 982 Layer* layer = |
| 973 LayerTreeHostCommon::FindLayerInSubtree(root_layer_.get(), | 983 LayerTreeHostCommon::FindLayerInSubtree(root_layer_.get(), |
| 974 info.scrolls[i].layer_id); | 984 info.scrolls[i].layer_id); |
| 975 if (!layer) | 985 if (!layer) |
| 976 continue; | 986 continue; |
| 977 if (layer == root_scroll_layer) { | 987 if (layer == root_scroll_layer) { |
| 978 root_scroll_delta += info.scrolls[i].scroll_delta; | 988 root_scroll_delta += info.scrolls[i].scroll_delta; |
| 979 } else { | 989 } else { |
| 980 layer->SetScrollOffsetFromImplSide(layer->scroll_offset() + | 990 layer->SetScrollOffsetFromImplSide(layer->scroll_offset() + |
| 981 info.scrolls[i].scroll_delta); | 991 info.scrolls[i].scroll_delta); |
| 982 } | 992 } |
| 983 } | 993 } |
| 984 if (!root_scroll_delta.IsZero() || info.page_scale_delta != 1.f) | 994 if (!root_scroll_delta.IsZero() || info.page_scale_delta != 1.f) |
| 985 client_->ApplyScrollAndScale(root_scroll_delta, info.page_scale_delta); | 995 client_->ApplyScrollAndScale(root_scroll_delta, info.page_scale_delta); |
| 996 | |
| 997 if (has_scrolls) { | |
| 998 TRACE_EVENT_ASYNC_END0( | |
| 999 "impl-scroll", | |
| 1000 "LayerTreeHost::ApplyScrollAndScale", | |
| 1001 this); | |
| 1002 } | |
| 986 } | 1003 } |
| 987 | 1004 |
| 988 void LayerTreeHost::StartRateLimiter(WebKit::WebGraphicsContext3D* context3d) { | 1005 void LayerTreeHost::StartRateLimiter(WebKit::WebGraphicsContext3D* context3d) { |
| 989 if (animating_) | 1006 if (animating_) |
| 990 return; | 1007 return; |
| 991 | 1008 |
| 992 DCHECK(context3d); | 1009 DCHECK(context3d); |
| 993 RateLimiterMap::iterator it = rate_limiters_.find(context3d); | 1010 RateLimiterMap::iterator it = rate_limiters_.find(context3d); |
| 994 if (it != rate_limiters_.end()) { | 1011 if (it != rate_limiters_.end()) { |
| 995 it->second->Start(); | 1012 it->second->Start(); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1075 for (AnimationRegistrar::AnimationControllerMap::iterator iter = copy.begin(); | 1092 for (AnimationRegistrar::AnimationControllerMap::iterator iter = copy.begin(); |
| 1076 iter != copy.end(); | 1093 iter != copy.end(); |
| 1077 ++iter) { | 1094 ++iter) { |
| 1078 (*iter).second->Animate(monotonic_time); | 1095 (*iter).second->Animate(monotonic_time); |
| 1079 bool start_ready_animations = true; | 1096 bool start_ready_animations = true; |
| 1080 (*iter).second->UpdateState(start_ready_animations, NULL); | 1097 (*iter).second->UpdateState(start_ready_animations, NULL); |
| 1081 } | 1098 } |
| 1082 } | 1099 } |
| 1083 | 1100 |
| 1084 } // namespace cc | 1101 } // namespace cc |
| OLD | NEW |