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

Unified Diff: cc/trees/property_tree.cc

Issue 1144993004: cc: Make impl-thread property trees handle fixed-position layers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@EnablePropertyTreeVerificationOnImpl
Patch Set: Add DCHECK 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree.cc
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index d96e9aa56653555e04e9de238c47f82a68169201..e155ee7f35a1135d0adb3e70e7d029549ebdd272 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -23,6 +23,9 @@ template <typename T>
PropertyTree<T>::~PropertyTree() {
}
+TransformTree::TransformTree() : source_to_parent_updates_allowed_(true) {
+}
+
template <typename T>
int PropertyTree<T>::Insert(const T& tree_node, int parent_id) {
DCHECK_GT(nodes_.size(), 0u);
@@ -137,12 +140,17 @@ bool TransformTree::Are2DAxisAligned(int source_id, int dest_id) const {
transform.Preserves2dAxisAlignment();
}
+bool TransformTree::NeedsSourceToParentUpdate(TransformNode* node) {
+ return (source_to_parent_updates_allowed() &&
+ node->parent_id != node->data.source_node_id);
+}
+
void TransformTree::UpdateTransforms(int id) {
TransformNode* node = Node(id);
TransformNode* parent_node = parent(node);
TransformNode* target_node = Node(node->data.target_id);
if (node->data.needs_local_transform_update ||
- node->parent_id != node->data.source_node_id)
+ NeedsSourceToParentUpdate(node))
UpdateLocalTransform(node);
UpdateScreenSpaceTransform(node, parent_node, target_node);
UpdateSublayerScale(node);
@@ -274,14 +282,14 @@ bool TransformTree::CombineInversesBetween(int source_id,
void TransformTree::UpdateLocalTransform(TransformNode* node) {
gfx::Transform transform = node->data.post_local;
- gfx::Vector2dF source_to_parent;
- if (node->parent_id != node->data.source_node_id) {
+ if (NeedsSourceToParentUpdate(node)) {
gfx::Transform to_parent;
ComputeTransform(node->data.source_node_id, node->parent_id, &to_parent);
- source_to_parent = to_parent.To2dTranslation();
+ node->data.source_to_parent = to_parent.To2dTranslation();
}
- transform.Translate(source_to_parent.x() - node->data.scroll_offset.x(),
- source_to_parent.y() - node->data.scroll_offset.y());
+ transform.Translate(
+ node->data.source_to_parent.x() - node->data.scroll_offset.x(),
+ node->data.source_to_parent.y() - node->data.scroll_offset.y());
transform.PreconcatTransform(node->data.local);
transform.PreconcatTransform(node->data.pre_local);
node->data.set_to_parent(transform);
« no previous file with comments | « cc/trees/property_tree.h ('k') | cc/trees/property_tree_builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698