summaryrefslogtreecommitdiffstats
path: root/cc/trees/property_tree.cc
diff options
context:
space:
mode:
authorjaydasika <jaydasika@chromium.org>2016-03-02 12:49:09 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-02 20:50:23 +0000
commitb311c9af45b970264872fcbd1ea54a7b0ead5894 (patch)
tree093b6992925521c956b44325b61fd55f00b48f0b /cc/trees/property_tree.cc
parent7fbc1dd0eb4d0abc6f3feca28d65d26f8f9ba674 (diff)
downloadchromium_src-b311c9af45b970264872fcbd1ea54a7b0ead5894.zip
chromium_src-b311c9af45b970264872fcbd1ea54a7b0ead5894.tar.gz
chromium_src-b311c9af45b970264872fcbd1ea54a7b0ead5894.tar.bz2
cc : Delete LayerImpl::NoteLayerPropertyChangedForSubtree
This CL also : * tracks filter changes on main thread and filter animations on effect tree. * tracks scroll offset changes on transform tree. * tracks bounds delta changes on property trees. BUG=584512 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1752993002 Cr-Commit-Position: refs/heads/master@{#378824}
Diffstat (limited to 'cc/trees/property_tree.cc')
-rw-r--r--cc/trees/property_tree.cc46
1 files changed, 34 insertions, 12 deletions
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index a109832..12bba36 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -435,7 +435,7 @@ EffectNodeData::EffectNodeData()
has_background_filters(false),
is_drawn(true),
has_animated_opacity(false),
- opacity_changed(false),
+ effect_changed(false),
num_copy_requests_in_subtree(0),
transform_id(0),
clip_id(0) {}
@@ -450,7 +450,7 @@ bool EffectNodeData::operator==(const EffectNodeData& other) const {
has_background_filters == other.has_background_filters &&
is_drawn == other.is_drawn &&
has_animated_opacity == other.has_animated_opacity &&
- opacity_changed == other.opacity_changed &&
+ effect_changed == other.effect_changed &&
num_copy_requests_in_subtree == other.num_copy_requests_in_subtree &&
transform_id == other.transform_id && clip_id == other.clip_id;
}
@@ -465,7 +465,7 @@ void EffectNodeData::ToProtobuf(proto::TreeNode* proto) const {
data->set_has_background_filters(has_background_filters);
data->set_is_drawn(is_drawn);
data->set_has_animated_opacity(has_animated_opacity);
- data->set_opacity_changed(opacity_changed);
+ data->set_effect_changed(effect_changed);
data->set_num_copy_requests_in_subtree(num_copy_requests_in_subtree);
data->set_transform_id(transform_id);
data->set_clip_id(clip_id);
@@ -482,7 +482,7 @@ void EffectNodeData::FromProtobuf(const proto::TreeNode& proto) {
has_background_filters = data.has_background_filters();
is_drawn = data.is_drawn();
has_animated_opacity = data.has_animated_opacity();
- opacity_changed = data.opacity_changed();
+ effect_changed = data.effect_changed();
num_copy_requests_in_subtree = data.num_copy_requests_in_subtree();
transform_id = data.transform_id();
clip_id = data.clip_id();
@@ -1178,10 +1178,10 @@ void EffectTree::UpdateIsDrawn(EffectNode* node, EffectNode* parent_node) {
node->data.is_drawn = true;
}
-void EffectTree::UpdateOpacityChanged(EffectNode* node,
- EffectNode* parent_node) {
- if (parent_node && parent_node->data.opacity_changed) {
- node->data.opacity_changed = true;
+void EffectTree::UpdateEffectChanged(EffectNode* node,
+ EffectNode* parent_node) {
+ if (parent_node && parent_node->data.effect_changed) {
+ node->data.effect_changed = true;
}
}
@@ -1191,7 +1191,7 @@ void EffectTree::UpdateEffects(int id) {
UpdateOpacities(node, parent_node);
UpdateIsDrawn(node, parent_node);
- UpdateOpacityChanged(node, parent_node);
+ UpdateEffectChanged(node, parent_node);
}
void EffectTree::ClearCopyRequests() {
@@ -1220,7 +1220,7 @@ bool EffectTree::ContributesToDrawnSurface(int id) {
void EffectTree::ResetChangeTracking() {
for (int id = 1; id < static_cast<int>(size()); ++id) {
EffectNode* node = Node(id);
- node->data.opacity_changed = false;
+ node->data.effect_changed = false;
}
}
@@ -1403,6 +1403,7 @@ PropertyTrees::PropertyTrees()
: needs_rebuild(true),
non_root_surfaces_enabled(true),
changed(false),
+ full_tree_damaged(false),
sequence_number(0) {
transform_tree.SetPropertyTrees(this);
effect_tree.SetPropertyTrees(this);
@@ -1417,6 +1418,7 @@ bool PropertyTrees::operator==(const PropertyTrees& other) const {
effect_tree == other.effect_tree && clip_tree == other.clip_tree &&
scroll_tree == other.scroll_tree &&
needs_rebuild == other.needs_rebuild && changed == other.changed &&
+ full_tree_damaged == other.full_tree_damaged &&
non_root_surfaces_enabled == other.non_root_surfaces_enabled &&
sequence_number == other.sequence_number;
}
@@ -1428,6 +1430,7 @@ PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) {
scroll_tree = from.scroll_tree;
needs_rebuild = from.needs_rebuild;
changed = from.changed;
+ full_tree_damaged = from.full_tree_damaged;
non_root_surfaces_enabled = from.non_root_surfaces_enabled;
sequence_number = from.sequence_number;
inner_viewport_container_bounds_delta_ =
@@ -1452,6 +1455,7 @@ void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const {
scroll_tree.ToProtobuf(proto->mutable_scroll_tree());
proto->set_needs_rebuild(needs_rebuild);
proto->set_changed(changed);
+ proto->set_full_tree_damaged(full_tree_damaged);
proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled);
// TODO(khushalsagar): Consider using the sequence number to decide if
@@ -1468,6 +1472,7 @@ void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) {
needs_rebuild = proto.needs_rebuild();
changed = proto.changed();
+ full_tree_damaged = proto.full_tree_damaged();
non_root_surfaces_enabled = proto.non_root_surfaces_enabled();
sequence_number = proto.sequence_number();
@@ -1503,9 +1508,9 @@ void PropertyTrees::SetInnerViewportScrollBoundsDelta(
void PropertyTrees::PushChangeTrackingTo(PropertyTrees* tree) {
for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) {
EffectNode* node = effect_tree.Node(id);
- if (node->data.opacity_changed) {
+ if (node->data.effect_changed) {
EffectNode* target_node = tree->effect_tree.Node(node->id);
- target_node->data.opacity_changed = true;
+ target_node->data.effect_changed = true;
}
}
for (int id = 1; id < static_cast<int>(transform_tree.size()); ++id) {
@@ -1515,6 +1520,23 @@ void PropertyTrees::PushChangeTrackingTo(PropertyTrees* tree) {
target_node->data.transform_changed = true;
}
}
+ tree->full_tree_damaged = full_tree_damaged;
+}
+
+void PropertyTrees::ResetAllChangeTracking(ResetFlags flag) {
+ switch (flag) {
+ case EFFECT_TREE:
+ effect_tree.ResetChangeTracking();
+ break;
+ case TRANSFORM_TREE:
+ transform_tree.ResetChangeTracking();
+ break;
+ case ALL_TREES:
+ transform_tree.ResetChangeTracking();
+ effect_tree.ResetChangeTracking();
+ }
+ changed = false;
+ full_tree_damaged = false;
}
} // namespace cc