Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(441)

Side by Side Diff: cc/trees/layer_tree_host.cc

Issue 437163007: Revert of Implement scroll handler latency tracking (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_common.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include <string> 9 #include <string>
10 10
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 content_is_suitable_for_gpu_rasterization_ &= 1025 content_is_suitable_for_gpu_rasterization_ &=
1026 it->IsSuitableForGpuRasterization(); 1026 it->IsSuitableForGpuRasterization();
1027 } 1027 }
1028 1028
1029 occlusion_tracker.LeaveLayer(it); 1029 occlusion_tracker.LeaveLayer(it);
1030 } 1030 }
1031 1031
1032 in_paint_layer_contents_ = false; 1032 in_paint_layer_contents_ = false;
1033 } 1033 }
1034 1034
1035 void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) { 1035 void LayerTreeHost::ApplyScrollAndScale(const ScrollAndScaleSet& info) {
1036 if (!root_layer_.get()) 1036 if (!root_layer_.get())
1037 return; 1037 return;
1038 1038
1039 ScopedPtrVector<SwapPromise>::iterator it = info->swap_promises.begin();
1040 for (; it != info->swap_promises.end(); ++it) {
1041 scoped_ptr<SwapPromise> swap_promise(info->swap_promises.take(it));
1042 TRACE_EVENT_FLOW_STEP0("input",
1043 "LatencyInfo.Flow",
1044 TRACE_ID_DONT_MANGLE(swap_promise->TraceId()),
1045 "Main thread scroll update");
1046 QueueSwapPromise(swap_promise.Pass());
1047 }
1048
1049 gfx::Vector2d inner_viewport_scroll_delta; 1039 gfx::Vector2d inner_viewport_scroll_delta;
1050 gfx::Vector2d outer_viewport_scroll_delta; 1040 gfx::Vector2d outer_viewport_scroll_delta;
1051 1041
1052 for (size_t i = 0; i < info->scrolls.size(); ++i) { 1042 for (size_t i = 0; i < info.scrolls.size(); ++i) {
1053 Layer* layer = LayerTreeHostCommon::FindLayerInSubtree( 1043 Layer* layer =
1054 root_layer_.get(), info->scrolls[i].layer_id); 1044 LayerTreeHostCommon::FindLayerInSubtree(root_layer_.get(),
1045 info.scrolls[i].layer_id);
1055 if (!layer) 1046 if (!layer)
1056 continue; 1047 continue;
1057 if (layer == outer_viewport_scroll_layer_.get()) { 1048 if (layer == outer_viewport_scroll_layer_.get()) {
1058 outer_viewport_scroll_delta += info->scrolls[i].scroll_delta; 1049 outer_viewport_scroll_delta += info.scrolls[i].scroll_delta;
1059 } else if (layer == inner_viewport_scroll_layer_.get()) { 1050 } else if (layer == inner_viewport_scroll_layer_.get()) {
1060 inner_viewport_scroll_delta += info->scrolls[i].scroll_delta; 1051 inner_viewport_scroll_delta += info.scrolls[i].scroll_delta;
1061 } else { 1052 } else {
1062 layer->SetScrollOffsetFromImplSide(layer->scroll_offset() + 1053 layer->SetScrollOffsetFromImplSide(layer->scroll_offset() +
1063 info->scrolls[i].scroll_delta); 1054 info.scrolls[i].scroll_delta);
1064 } 1055 }
1065 } 1056 }
1066 1057
1067 if (!inner_viewport_scroll_delta.IsZero() || 1058 if (!inner_viewport_scroll_delta.IsZero() ||
1068 !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f) { 1059 !outer_viewport_scroll_delta.IsZero() || info.page_scale_delta != 1.f) {
1069 // SetScrollOffsetFromImplSide above could have destroyed the tree, 1060 // SetScrollOffsetFromImplSide above could have destroyed the tree,
1070 // so re-get this layer before doing anything to it. 1061 // so re-get this layer before doing anything to it.
1071 1062
1072 // Preemptively apply the scroll offset and scale delta here before sending 1063 // Preemptively apply the scroll offset and scale delta here before sending
1073 // it to the client. If the client comes back and sets it to the same 1064 // it to the client. If the client comes back and sets it to the same
1074 // value, then the layer can early out without needing a full commit. 1065 // value, then the layer can early out without needing a full commit.
1075 DCHECK(inner_viewport_scroll_layer_); // We should always have this. 1066 DCHECK(inner_viewport_scroll_layer_); // We should always have this.
1076 1067
1077 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( 1068 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide(
1078 inner_viewport_scroll_layer_->scroll_offset() + 1069 inner_viewport_scroll_layer_->scroll_offset() +
1079 inner_viewport_scroll_delta); 1070 inner_viewport_scroll_delta);
1080 if (outer_viewport_scroll_layer_) { 1071 if (outer_viewport_scroll_layer_) {
1081 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide( 1072 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide(
1082 outer_viewport_scroll_layer_->scroll_offset() + 1073 outer_viewport_scroll_layer_->scroll_offset() +
1083 outer_viewport_scroll_delta); 1074 outer_viewport_scroll_delta);
1084 } 1075 }
1085 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); 1076 ApplyPageScaleDeltaFromImplSide(info.page_scale_delta);
1086 1077
1087 client_->ApplyScrollAndScale( 1078 client_->ApplyScrollAndScale(
1088 inner_viewport_scroll_delta + outer_viewport_scroll_delta, 1079 inner_viewport_scroll_delta + outer_viewport_scroll_delta,
1089 info->page_scale_delta); 1080 info.page_scale_delta);
1090 } 1081 }
1091 } 1082 }
1092 1083
1093 void LayerTreeHost::StartRateLimiter() { 1084 void LayerTreeHost::StartRateLimiter() {
1094 if (animating_) 1085 if (animating_)
1095 return; 1086 return;
1096 1087
1097 if (!rate_limit_timer_.IsRunning()) { 1088 if (!rate_limit_timer_.IsRunning()) {
1098 rate_limit_timer_.Start(FROM_HERE, 1089 rate_limit_timer_.Start(FROM_HERE,
1099 base::TimeDelta(), 1090 base::TimeDelta(),
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 swap_promise_list_.push_back(swap_promise.Pass()); 1285 swap_promise_list_.push_back(swap_promise.Pass());
1295 } 1286 }
1296 1287
1297 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { 1288 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) {
1298 for (size_t i = 0; i < swap_promise_list_.size(); i++) 1289 for (size_t i = 0; i < swap_promise_list_.size(); i++)
1299 swap_promise_list_[i]->DidNotSwap(reason); 1290 swap_promise_list_[i]->DidNotSwap(reason);
1300 swap_promise_list_.clear(); 1291 swap_promise_list_.clear();
1301 } 1292 }
1302 1293
1303 } // namespace cc 1294 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_common.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698