Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 1909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1920 PropertyTrees::~PropertyTrees() {} | 1920 PropertyTrees::~PropertyTrees() {} |
| 1921 | 1921 |
| 1922 bool PropertyTrees::operator==(const PropertyTrees& other) const { | 1922 bool PropertyTrees::operator==(const PropertyTrees& other) const { |
| 1923 return transform_tree == other.transform_tree && | 1923 return transform_tree == other.transform_tree && |
| 1924 effect_tree == other.effect_tree && clip_tree == other.clip_tree && | 1924 effect_tree == other.effect_tree && clip_tree == other.clip_tree && |
| 1925 scroll_tree == other.scroll_tree && | 1925 scroll_tree == other.scroll_tree && |
| 1926 transform_id_to_index_map == other.transform_id_to_index_map && | 1926 transform_id_to_index_map == other.transform_id_to_index_map && |
| 1927 effect_id_to_index_map == other.effect_id_to_index_map && | 1927 effect_id_to_index_map == other.effect_id_to_index_map && |
| 1928 clip_id_to_index_map == other.clip_id_to_index_map && | 1928 clip_id_to_index_map == other.clip_id_to_index_map && |
| 1929 scroll_id_to_index_map == other.scroll_id_to_index_map && | 1929 scroll_id_to_index_map == other.scroll_id_to_index_map && |
| 1930 always_use_active_tree_opacity_effect_ids == | |
| 1931 other.always_use_active_tree_opacity_effect_ids && | |
| 1930 needs_rebuild == other.needs_rebuild && changed == other.changed && | 1932 needs_rebuild == other.needs_rebuild && changed == other.changed && |
| 1931 full_tree_damaged == other.full_tree_damaged && | 1933 full_tree_damaged == other.full_tree_damaged && |
| 1932 is_main_thread == other.is_main_thread && | 1934 is_main_thread == other.is_main_thread && |
| 1933 is_active == other.is_active && | 1935 is_active == other.is_active && |
| 1934 non_root_surfaces_enabled == other.non_root_surfaces_enabled && | 1936 non_root_surfaces_enabled == other.non_root_surfaces_enabled && |
| 1935 sequence_number == other.sequence_number; | 1937 sequence_number == other.sequence_number; |
| 1936 } | 1938 } |
| 1937 | 1939 |
| 1938 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { | 1940 PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { |
| 1939 transform_tree = from.transform_tree; | 1941 transform_tree = from.transform_tree; |
| 1940 effect_tree = from.effect_tree; | 1942 effect_tree = from.effect_tree; |
| 1941 clip_tree = from.clip_tree; | 1943 clip_tree = from.clip_tree; |
| 1942 scroll_tree = from.scroll_tree; | 1944 scroll_tree = from.scroll_tree; |
| 1943 transform_id_to_index_map = from.transform_id_to_index_map; | 1945 transform_id_to_index_map = from.transform_id_to_index_map; |
| 1944 effect_id_to_index_map = from.effect_id_to_index_map; | 1946 effect_id_to_index_map = from.effect_id_to_index_map; |
| 1947 always_use_active_tree_opacity_effect_ids = | |
| 1948 from.always_use_active_tree_opacity_effect_ids; | |
| 1945 clip_id_to_index_map = from.clip_id_to_index_map; | 1949 clip_id_to_index_map = from.clip_id_to_index_map; |
| 1946 scroll_id_to_index_map = from.scroll_id_to_index_map; | 1950 scroll_id_to_index_map = from.scroll_id_to_index_map; |
| 1947 needs_rebuild = from.needs_rebuild; | 1951 needs_rebuild = from.needs_rebuild; |
| 1948 changed = from.changed; | 1952 changed = from.changed; |
| 1949 full_tree_damaged = from.full_tree_damaged; | 1953 full_tree_damaged = from.full_tree_damaged; |
| 1950 non_root_surfaces_enabled = from.non_root_surfaces_enabled; | 1954 non_root_surfaces_enabled = from.non_root_surfaces_enabled; |
| 1951 sequence_number = from.sequence_number; | 1955 sequence_number = from.sequence_number; |
| 1952 is_main_thread = from.is_main_thread; | 1956 is_main_thread = from.is_main_thread; |
| 1953 is_active = from.is_active; | 1957 is_active = from.is_active; |
| 1954 inner_viewport_container_bounds_delta_ = | 1958 inner_viewport_container_bounds_delta_ = |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1974 proto->set_needs_rebuild(needs_rebuild); | 1978 proto->set_needs_rebuild(needs_rebuild); |
| 1975 proto->set_changed(changed); | 1979 proto->set_changed(changed); |
| 1976 proto->set_full_tree_damaged(full_tree_damaged); | 1980 proto->set_full_tree_damaged(full_tree_damaged); |
| 1977 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled); | 1981 proto->set_non_root_surfaces_enabled(non_root_surfaces_enabled); |
| 1978 proto->set_is_main_thread(is_main_thread); | 1982 proto->set_is_main_thread(is_main_thread); |
| 1979 proto->set_is_active(is_active); | 1983 proto->set_is_active(is_active); |
| 1980 | 1984 |
| 1981 // TODO(khushalsagar): Consider using the sequence number to decide if | 1985 // TODO(khushalsagar): Consider using the sequence number to decide if |
| 1982 // property trees need to be serialized again for a commit. See crbug/555370. | 1986 // property trees need to be serialized again for a commit. See crbug/555370. |
| 1983 proto->set_sequence_number(sequence_number); | 1987 proto->set_sequence_number(sequence_number); |
| 1988 | |
| 1989 for (auto i : always_use_active_tree_opacity_effect_ids) | |
| 1990 proto->add_always_use_active_tree_opacity_effect_ids(i); | |
| 1984 } | 1991 } |
| 1985 | 1992 |
| 1986 // static | 1993 // static |
| 1987 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { | 1994 void PropertyTrees::FromProtobuf(const proto::PropertyTrees& proto) { |
| 1988 transform_tree.FromProtobuf(proto.transform_tree(), | 1995 transform_tree.FromProtobuf(proto.transform_tree(), |
| 1989 &transform_id_to_index_map); | 1996 &transform_id_to_index_map); |
| 1990 effect_tree.FromProtobuf(proto.effect_tree(), &effect_id_to_index_map); | 1997 effect_tree.FromProtobuf(proto.effect_tree(), &effect_id_to_index_map); |
| 1991 clip_tree.FromProtobuf(proto.clip_tree(), &clip_id_to_index_map); | 1998 clip_tree.FromProtobuf(proto.clip_tree(), &clip_id_to_index_map); |
| 1992 scroll_tree.FromProtobuf(proto.scroll_tree(), &scroll_id_to_index_map); | 1999 scroll_tree.FromProtobuf(proto.scroll_tree(), &scroll_id_to_index_map); |
| 1993 | 2000 |
| 1994 needs_rebuild = proto.needs_rebuild(); | 2001 needs_rebuild = proto.needs_rebuild(); |
| 1995 changed = proto.changed(); | 2002 changed = proto.changed(); |
| 1996 full_tree_damaged = proto.full_tree_damaged(); | 2003 full_tree_damaged = proto.full_tree_damaged(); |
| 1997 non_root_surfaces_enabled = proto.non_root_surfaces_enabled(); | 2004 non_root_surfaces_enabled = proto.non_root_surfaces_enabled(); |
| 1998 sequence_number = proto.sequence_number(); | 2005 sequence_number = proto.sequence_number(); |
| 1999 is_main_thread = proto.is_main_thread(); | 2006 is_main_thread = proto.is_main_thread(); |
| 2000 is_active = proto.is_active(); | 2007 is_active = proto.is_active(); |
| 2001 | 2008 |
| 2002 transform_tree.SetPropertyTrees(this); | 2009 transform_tree.SetPropertyTrees(this); |
| 2003 effect_tree.SetPropertyTrees(this); | 2010 effect_tree.SetPropertyTrees(this); |
| 2004 clip_tree.SetPropertyTrees(this); | 2011 clip_tree.SetPropertyTrees(this); |
| 2005 scroll_tree.SetPropertyTrees(this); | 2012 scroll_tree.SetPropertyTrees(this); |
| 2013 for (auto i : proto.always_use_active_tree_opacity_effect_ids()) | |
| 2014 always_use_active_tree_opacity_effect_ids.push_back(i); | |
| 2006 } | 2015 } |
| 2007 | 2016 |
| 2008 void PropertyTrees::SetInnerViewportContainerBoundsDelta( | 2017 void PropertyTrees::SetInnerViewportContainerBoundsDelta( |
| 2009 gfx::Vector2dF bounds_delta) { | 2018 gfx::Vector2dF bounds_delta) { |
| 2010 if (inner_viewport_container_bounds_delta_ == bounds_delta) | 2019 if (inner_viewport_container_bounds_delta_ == bounds_delta) |
| 2011 return; | 2020 return; |
| 2012 | 2021 |
| 2013 inner_viewport_container_bounds_delta_ = bounds_delta; | 2022 inner_viewport_container_bounds_delta_ = bounds_delta; |
| 2014 transform_tree.UpdateInnerViewportContainerBoundsDelta(); | 2023 transform_tree.UpdateInnerViewportContainerBoundsDelta(); |
| 2015 } | 2024 } |
| 2016 | 2025 |
| 2017 void PropertyTrees::SetOuterViewportContainerBoundsDelta( | 2026 void PropertyTrees::SetOuterViewportContainerBoundsDelta( |
| 2018 gfx::Vector2dF bounds_delta) { | 2027 gfx::Vector2dF bounds_delta) { |
| 2019 if (outer_viewport_container_bounds_delta_ == bounds_delta) | 2028 if (outer_viewport_container_bounds_delta_ == bounds_delta) |
| 2020 return; | 2029 return; |
| 2021 | 2030 |
| 2022 outer_viewport_container_bounds_delta_ = bounds_delta; | 2031 outer_viewport_container_bounds_delta_ = bounds_delta; |
| 2023 transform_tree.UpdateOuterViewportContainerBoundsDelta(); | 2032 transform_tree.UpdateOuterViewportContainerBoundsDelta(); |
| 2024 } | 2033 } |
| 2025 | 2034 |
| 2026 void PropertyTrees::SetInnerViewportScrollBoundsDelta( | 2035 void PropertyTrees::SetInnerViewportScrollBoundsDelta( |
| 2027 gfx::Vector2dF bounds_delta) { | 2036 gfx::Vector2dF bounds_delta) { |
| 2028 inner_viewport_scroll_bounds_delta_ = bounds_delta; | 2037 inner_viewport_scroll_bounds_delta_ = bounds_delta; |
| 2029 } | 2038 } |
| 2030 | 2039 |
| 2040 void PropertyTrees::PushOpacityIfNeeded(PropertyTrees* target_tree) { | |
| 2041 for (int id : target_tree->always_use_active_tree_opacity_effect_ids) { | |
| 2042 if (effect_id_to_index_map.find(id) == effect_id_to_index_map.end()) | |
| 2043 continue; | |
| 2044 EffectNode* source_effect_node = | |
| 2045 effect_tree.Node(effect_id_to_index_map[id]); | |
| 2046 EffectNode* target_effect_node = | |
| 2047 target_tree->effect_tree.Node(target_tree->effect_id_to_index_map[id]); | |
| 2048 target_effect_node->data.opacity = source_effect_node->data.opacity; | |
| 2049 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.
| |
| 2050 } | |
| 2051 } | |
| 2052 | |
| 2031 void PropertyTrees::UpdateChangeTracking() { | 2053 void PropertyTrees::UpdateChangeTracking() { |
| 2032 for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) { | 2054 for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) { |
| 2033 EffectNode* node = effect_tree.Node(id); | 2055 EffectNode* node = effect_tree.Node(id); |
| 2034 EffectNode* parent_node = effect_tree.parent(node); | 2056 EffectNode* parent_node = effect_tree.parent(node); |
| 2035 effect_tree.UpdateEffectChanged(node, parent_node); | 2057 effect_tree.UpdateEffectChanged(node, parent_node); |
| 2036 } | 2058 } |
| 2037 for (int i = 1; i < static_cast<int>(transform_tree.size()); ++i) { | 2059 for (int i = 1; i < static_cast<int>(transform_tree.size()); ++i) { |
| 2038 TransformNode* node = transform_tree.Node(i); | 2060 TransformNode* node = transform_tree.Node(i); |
| 2039 TransformNode* parent_node = transform_tree.parent(node); | 2061 TransformNode* parent_node = transform_tree.parent(node); |
| 2040 TransformNode* source_node = transform_tree.Node(node->data.source_node_id); | 2062 TransformNode* source_node = transform_tree.Node(node->data.source_node_id); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2098 value->EndDictionary(); | 2120 value->EndDictionary(); |
| 2099 | 2121 |
| 2100 value->BeginDictionary("scroll_tree"); | 2122 value->BeginDictionary("scroll_tree"); |
| 2101 scroll_tree.AsValueInto(value.get()); | 2123 scroll_tree.AsValueInto(value.get()); |
| 2102 value->EndDictionary(); | 2124 value->EndDictionary(); |
| 2103 | 2125 |
| 2104 return value; | 2126 return value; |
| 2105 } | 2127 } |
| 2106 | 2128 |
| 2107 } // namespace cc | 2129 } // namespace cc |
| OLD | NEW |