Chromium Code Reviews| Index: cc/trees/property_tree.cc |
| diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
| index ca70e5257100e64966a1f900e4def98808d450b9..c87642b2024322ba35510954b5900922166aaa7c 100644 |
| --- a/cc/trees/property_tree.cc |
| +++ b/cc/trees/property_tree.cc |
| @@ -1927,6 +1927,8 @@ bool PropertyTrees::operator==(const PropertyTrees& other) const { |
| effect_id_to_index_map == other.effect_id_to_index_map && |
| clip_id_to_index_map == other.clip_id_to_index_map && |
| scroll_id_to_index_map == other.scroll_id_to_index_map && |
| + always_use_active_tree_opacity_effect_ids == |
| + other.always_use_active_tree_opacity_effect_ids && |
| needs_rebuild == other.needs_rebuild && changed == other.changed && |
| full_tree_damaged == other.full_tree_damaged && |
| is_main_thread == other.is_main_thread && |
| @@ -1942,6 +1944,8 @@ PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { |
| scroll_tree = from.scroll_tree; |
| transform_id_to_index_map = from.transform_id_to_index_map; |
| effect_id_to_index_map = from.effect_id_to_index_map; |
| + always_use_active_tree_opacity_effect_ids = |
| + from.always_use_active_tree_opacity_effect_ids; |
| clip_id_to_index_map = from.clip_id_to_index_map; |
| scroll_id_to_index_map = from.scroll_id_to_index_map; |
| needs_rebuild = from.needs_rebuild; |
| @@ -1981,6 +1985,9 @@ void PropertyTrees::ToProtobuf(proto::PropertyTrees* proto) const { |
| // TODO(khushalsagar): Consider using the sequence number to decide if |
| // property trees need to be serialized again for a commit. See crbug/555370. |
| proto->set_sequence_number(sequence_number); |
| + |
| + for (auto i : always_use_active_tree_opacity_effect_ids) |
| + proto->add_always_use_active_tree_opacity_effect_ids(i); |
| } |
| // static |
| @@ -2003,6 +2010,8 @@ void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { |
| effect_tree.SetPropertyTrees(this); |
| clip_tree.SetPropertyTrees(this); |
| scroll_tree.SetPropertyTrees(this); |
| + for (auto i : proto.always_use_active_tree_opacity_effect_ids()) |
| + always_use_active_tree_opacity_effect_ids.push_back(i); |
| } |
| void PropertyTrees::SetInnerViewportContainerBoundsDelta( |
| @@ -2028,6 +2037,19 @@ void PropertyTrees::SetInnerViewportScrollBoundsDelta( |
| inner_viewport_scroll_bounds_delta_ = bounds_delta; |
| } |
| +void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) { |
| + for (int id : target_tree->always_use_active_tree_opacity_effect_ids) { |
| + if (effect_id_to_index_map.find(id) == effect_id_to_index_map.end()) |
| + continue; |
| + EffectNode* source_effect_node = |
| + effect_tree.Node(effect_id_to_index_map[id]); |
| + EffectNode* target_effect_node = |
| + target_tree->effect_tree.Node(target_tree->effect_id_to_index_map[id]); |
| + target_effect_node->data.opacity = source_effect_node->data.opacity; |
| + target_tree->effect_tree.set_needs_update(true); |
|
ajuma
2016/05/18 13:53:48
This should be conditional on the opacity value ch
jaydasika
2016/05/19 00:27:09
Done.
|
| + } |
| +} |
| + |
| void PropertyTrees::UpdateChangeTracking() { |
| for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) { |
| EffectNode* node = effect_tree.Node(id); |