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

Side by Side Diff: cc/layers/layer_impl.cc

Issue 1141353002: cc: Update transform tree after compositor thread scroll (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@compproptree_2_add_verification_code
Patch Set: Update to scroll offset Created 5 years, 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/layers/layer_impl.h" 5 #include "cc/layers/layer_impl.h"
6 6
7 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "base/trace_event/trace_event_argument.h" 10 #include "base/trace_event/trace_event_argument.h"
(...skipping 1200 matching lines...) Expand 10 before | Expand all | Expand 10 after
1211 } 1211 }
1212 if (IsActive()) { 1212 if (IsActive()) {
1213 changed |= scroll_offset_->PushPendingToActive(); 1213 changed |= scroll_offset_->PushPendingToActive();
1214 } 1214 }
1215 1215
1216 if (changed) 1216 if (changed)
1217 DidUpdateScrollOffset(false); 1217 DidUpdateScrollOffset(false);
1218 } 1218 }
1219 1219
1220 void LayerImpl::DidUpdateScrollOffset(bool is_from_root_delegate) { 1220 void LayerImpl::DidUpdateScrollOffset(bool is_from_root_delegate) {
1221 DCHECK(scroll_offset_);
1222
1221 if (!is_from_root_delegate) 1223 if (!is_from_root_delegate)
1222 layer_tree_impl()->DidUpdateScrollOffset(id()); 1224 layer_tree_impl()->DidUpdateScrollOffset(id());
1223 NoteLayerPropertyChangedForSubtree(); 1225 NoteLayerPropertyChangedForSubtree();
1224 ScrollbarParametersDidChange(false); 1226 ScrollbarParametersDidChange(false);
1227
1228 // TODO(enne): in the future, scrolling should update the scroll tree
1229 // directly instead of going through layers.
1230 if (transform_tree_index_ != -1) {
1231 TransformTree& transform_tree =
1232 layer_tree_impl()->property_trees()->transform_tree;
1233 TransformNode* node = transform_tree.Node(transform_tree_index_);
1234 node->data.scroll_offset = scroll_offset_->Current(IsActive());
1235 node->data.needs_local_transform_update = true;
1236 transform_tree.set_needs_update(true);
1237 }
1238
1225 // Inform the pending twin that a property changed. 1239 // Inform the pending twin that a property changed.
1226 if (layer_tree_impl()->IsActiveTree()) { 1240 if (layer_tree_impl()->IsActiveTree()) {
1227 LayerImpl* pending_twin = layer_tree_impl()->FindPendingTreeLayerById(id()); 1241 LayerImpl* pending_twin = layer_tree_impl()->FindPendingTreeLayerById(id());
1228 if (pending_twin) 1242 if (pending_twin)
1229 pending_twin->NoteLayerPropertyChangedForSubtree(); 1243 pending_twin->DidUpdateScrollOffset(is_from_root_delegate);
1230 } 1244 }
1231 } 1245 }
1232 1246
1233 void LayerImpl::SetDoubleSided(bool double_sided) { 1247 void LayerImpl::SetDoubleSided(bool double_sided) {
1234 if (double_sided_ == double_sided) 1248 if (double_sided_ == double_sided)
1235 return; 1249 return;
1236 1250
1237 double_sided_ = double_sided; 1251 double_sided_ = double_sided;
1238 NoteLayerPropertyChangedForSubtree(); 1252 NoteLayerPropertyChangedForSubtree();
1239 } 1253 }
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
1642 gfx::Transform scaled_draw_transform = 1656 gfx::Transform scaled_draw_transform =
1643 draw_properties_.target_space_transform; 1657 draw_properties_.target_space_transform;
1644 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); 1658 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale);
1645 gfx::Size scaled_content_bounds = 1659 gfx::Size scaled_content_bounds =
1646 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), scale)); 1660 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), scale));
1647 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform, 1661 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform,
1648 gfx::Rect(scaled_content_bounds)); 1662 gfx::Rect(scaled_content_bounds));
1649 } 1663 }
1650 1664
1651 } // namespace cc 1665 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698