Chromium Code Reviews| Index: cc/trees/layer_tree_host.cc |
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
| index 48f4864ef4a14e903aba2665fa85a989f725ea8a..0b7644618c5c24a75ddb629865e3aed5976c07b1 100644 |
| --- a/cc/trees/layer_tree_host.cc |
| +++ b/cc/trees/layer_tree_host.cc |
| @@ -18,6 +18,7 @@ |
| #include "base/strings/string_number_conversions.h" |
| #include "cc/animation/animation_registrar.h" |
| #include "cc/animation/layer_animation_controller.h" |
| +#include "cc/base/latency_info_swap_promise.h" |
| #include "cc/base/math_util.h" |
| #include "cc/debug/devtools_instrumentation.h" |
| #include "cc/debug/rendering_stats_instrumentation.h" |
| @@ -1017,31 +1018,43 @@ void LayerTreeHost::PaintLayerContents( |
| in_paint_layer_contents_ = false; |
| } |
| -void LayerTreeHost::ApplyScrollAndScale(const ScrollAndScaleSet& info) { |
| +void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) { |
| if (!root_layer_.get()) |
| return; |
| + ScopedPtrVector<LatencyInfoSwapPromise>::iterator it = |
| + info->swap_promises.begin(); |
| + for (; it != info->swap_promises.end(); ++it) { |
| + scoped_ptr<LatencyInfoSwapPromise> swap_promise( |
| + info->swap_promises.take(it)); |
| + TRACE_EVENT_FLOW_STEP0( |
| + "input", |
| + "LatencyInfo.Flow", |
| + TRACE_ID_DONT_MANGLE(swap_promise->latency_info().trace_id), |
|
danakj
2014/07/09 15:50:35
LGTM but if you were to put a TraceId() accessor o
|
| + "Main thread scroll update"); |
| + QueueSwapPromise(swap_promise.PassAs<SwapPromise>()); |
| + } |
| + |
| gfx::Vector2d inner_viewport_scroll_delta; |
| gfx::Vector2d outer_viewport_scroll_delta; |
| - for (size_t i = 0; i < info.scrolls.size(); ++i) { |
| - Layer* layer = |
| - LayerTreeHostCommon::FindLayerInSubtree(root_layer_.get(), |
| - info.scrolls[i].layer_id); |
| + for (size_t i = 0; i < info->scrolls.size(); ++i) { |
| + Layer* layer = LayerTreeHostCommon::FindLayerInSubtree( |
| + root_layer_.get(), info->scrolls[i].layer_id); |
| if (!layer) |
| continue; |
| if (layer == outer_viewport_scroll_layer_.get()) { |
| - outer_viewport_scroll_delta += info.scrolls[i].scroll_delta; |
| + outer_viewport_scroll_delta += info->scrolls[i].scroll_delta; |
| } else if (layer == inner_viewport_scroll_layer_.get()) { |
| - inner_viewport_scroll_delta += info.scrolls[i].scroll_delta; |
| + inner_viewport_scroll_delta += info->scrolls[i].scroll_delta; |
| } else { |
| layer->SetScrollOffsetFromImplSide(layer->scroll_offset() + |
| - info.scrolls[i].scroll_delta); |
| + info->scrolls[i].scroll_delta); |
| } |
| } |
| if (!inner_viewport_scroll_delta.IsZero() || |
| - !outer_viewport_scroll_delta.IsZero() || info.page_scale_delta != 1.f) { |
| + !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f) { |
| // SetScrollOffsetFromImplSide above could have destroyed the tree, |
| // so re-get this layer before doing anything to it. |
| @@ -1058,11 +1071,11 @@ void LayerTreeHost::ApplyScrollAndScale(const ScrollAndScaleSet& info) { |
| outer_viewport_scroll_layer_->scroll_offset() + |
| outer_viewport_scroll_delta); |
| } |
| - ApplyPageScaleDeltaFromImplSide(info.page_scale_delta); |
| + ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); |
| client_->ApplyScrollAndScale( |
| inner_viewport_scroll_delta + outer_viewport_scroll_delta, |
| - info.page_scale_delta); |
| + info->page_scale_delta); |
| } |
| } |