diff options
author | sunxd <sunxd@chromium.org> | 2016-03-03 14:31:10 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-03 22:32:28 +0000 |
commit | c36713a0336c00a0971fe33514adc01f4df693fa (patch) | |
tree | 8e9b76bd9b79b76e1418aecaab20960597fe8c33 /cc/layers/layer.cc | |
parent | 1f8acc51c0c5d9fea66917884b927eff8f3e570e (diff) | |
download | chromium_src-c36713a0336c00a0971fe33514adc01f4df693fa.zip chromium_src-c36713a0336c00a0971fe33514adc01f4df693fa.tar.gz chromium_src-c36713a0336c00a0971fe33514adc01f4df693fa.tar.bz2 |
cc: Move SyncedScrollOffset to scroll tree
Now updating scrolling information on impl side can be independent of layer impl.
There are still some left-over changes corresponding to NoteLayerPropertiesChanged.
SyncedScrollOffset of scrollable layers are now stored in property trees instead of
layer impl. The main thread property tree has one copy while pending and active share
one.
BUG=568830
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1736073002
Cr-Commit-Position: refs/heads/master@{#379116}
Diffstat (limited to 'cc/layers/layer.cc')
-rw-r--r-- | cc/layers/layer.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc index 23abc3b..7f51dc0 100644 --- a/cc/layers/layer.cc +++ b/cc/layers/layer.cc @@ -884,6 +884,10 @@ void Layer::SetScrollOffset(const gfx::ScrollOffset& scroll_offset) { if (!layer_tree_host_) return; + if (scroll_tree_index() != -1 && scrollable()) + layer_tree_host_->property_trees()->scroll_tree.SetScrollOffset( + id(), scroll_offset); + if (TransformNode* transform_node = layer_tree_host_->property_trees()->transform_tree.Node( transform_tree_index())) { @@ -923,6 +927,11 @@ void Layer::SetScrollOffsetFromImplSide( SetNeedsPushProperties(); bool needs_rebuild = true; + + if (scroll_tree_index() != -1 && scrollable()) + layer_tree_host_->property_trees()->scroll_tree.SetScrollOffset( + id(), scroll_offset); + if (TransformNode* transform_node = layer_tree_host_->property_trees()->transform_tree.Node( transform_tree_index())) { @@ -1338,9 +1347,10 @@ void Layer::PushPropertiesTo(LayerImpl* layer) { // active tree. To do so, avoid scrolling the pending tree along with it // instead of trying to undo that scrolling later. if (ScrollOffsetAnimationWasInterrupted()) - layer->PushScrollOffsetFromMainThreadAndClobberActiveValue(scroll_offset_); - else - layer->PushScrollOffsetFromMainThread(scroll_offset_); + layer_tree_host() + ->property_trees() + ->scroll_tree.synced_scroll_offset(layer->id()) + ->set_clobber_active_value(); layer->SetScrollCompensationAdjustment(ScrollCompensationAdjustment()); { @@ -1703,8 +1713,7 @@ void Layer::FromLayerSpecificPropertiesProto( } scoped_ptr<LayerImpl> Layer::CreateLayerImpl(LayerTreeImpl* tree_impl) { - return LayerImpl::Create(tree_impl, layer_id_, - new LayerImpl::SyncedScrollOffset); + return LayerImpl::Create(tree_impl, layer_id_); } bool Layer::DrawsContent() const { |