Commit 04192cf9 authored by enne's avatar enne Committed by Commit bot

cc: Update transform tree after compositor thread scroll

When LayerImpls scroll, their associated transform trees need to be
updated so that they are correct.

This fixes 17 of the 79 failing tests, when verification is turned on.

R=ajuma@chromium.org,vollick@chromium.org
BUG=481585

Review URL: https://codereview.chromium.org/1141353002

Cr-Commit-Position: refs/heads/master@{#330662}
parent 1cb99158
...@@ -1217,15 +1217,29 @@ void LayerImpl::PushScrollOffset(const gfx::ScrollOffset* scroll_offset) { ...@@ -1217,15 +1217,29 @@ void LayerImpl::PushScrollOffset(const gfx::ScrollOffset* scroll_offset) {
} }
void LayerImpl::DidUpdateScrollOffset(bool is_from_root_delegate) { void LayerImpl::DidUpdateScrollOffset(bool is_from_root_delegate) {
DCHECK(scroll_offset_);
if (!is_from_root_delegate) if (!is_from_root_delegate)
layer_tree_impl()->DidUpdateScrollOffset(id()); layer_tree_impl()->DidUpdateScrollOffset(id());
NoteLayerPropertyChangedForSubtree(); NoteLayerPropertyChangedForSubtree();
ScrollbarParametersDidChange(false); ScrollbarParametersDidChange(false);
// TODO(enne): in the future, scrolling should update the scroll tree
// directly instead of going through layers.
if (transform_tree_index_ != -1) {
TransformTree& transform_tree =
layer_tree_impl()->property_trees()->transform_tree;
TransformNode* node = transform_tree.Node(transform_tree_index_);
node->data.scroll_offset = scroll_offset_->Current(IsActive());
node->data.needs_local_transform_update = true;
transform_tree.set_needs_update(true);
}
// Inform the pending twin that a property changed. // Inform the pending twin that a property changed.
if (layer_tree_impl()->IsActiveTree()) { if (layer_tree_impl()->IsActiveTree()) {
LayerImpl* pending_twin = layer_tree_impl()->FindPendingTreeLayerById(id()); LayerImpl* pending_twin = layer_tree_impl()->FindPendingTreeLayerById(id());
if (pending_twin) if (pending_twin)
pending_twin->NoteLayerPropertyChangedForSubtree(); pending_twin->DidUpdateScrollOffset(is_from_root_delegate);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment