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

Side by Side Diff: cc/trees/property_tree.cc

Issue 1949253006: cc: Ensure damage in property tree nodes gets propagated to descendants (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2704
Patch Set: Created 4 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 | « cc/trees/property_tree.h ('k') | 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 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 1874 matching lines...) Expand 10 before | Expand all | Expand 10 after
1885 1885
1886 outer_viewport_container_bounds_delta_ = bounds_delta; 1886 outer_viewport_container_bounds_delta_ = bounds_delta;
1887 transform_tree.UpdateOuterViewportContainerBoundsDelta(); 1887 transform_tree.UpdateOuterViewportContainerBoundsDelta();
1888 } 1888 }
1889 1889
1890 void PropertyTrees::SetInnerViewportScrollBoundsDelta( 1890 void PropertyTrees::SetInnerViewportScrollBoundsDelta(
1891 gfx::Vector2dF bounds_delta) { 1891 gfx::Vector2dF bounds_delta) {
1892 inner_viewport_scroll_bounds_delta_ = bounds_delta; 1892 inner_viewport_scroll_bounds_delta_ = bounds_delta;
1893 } 1893 }
1894 1894
1895 void PropertyTrees::UpdateChangeTracking() {
1896 for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) {
1897 EffectNode* node = effect_tree.Node(id);
1898 EffectNode* parent_node = effect_tree.parent(node);
1899 effect_tree.UpdateEffectChanged(node, parent_node);
1900 }
1901 for (int i = 1; i < static_cast<int>(transform_tree.size()); ++i) {
1902 TransformNode* node = transform_tree.Node(i);
1903 TransformNode* parent_node = transform_tree.parent(node);
1904 TransformNode* source_node = transform_tree.Node(node->data.source_node_id);
1905 transform_tree.UpdateTransformChanged(node, parent_node, source_node);
1906 }
1907 }
1908
1895 void PropertyTrees::PushChangeTrackingTo(PropertyTrees* tree) { 1909 void PropertyTrees::PushChangeTrackingTo(PropertyTrees* tree) {
1896 for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) { 1910 for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) {
1897 EffectNode* node = effect_tree.Node(id); 1911 EffectNode* node = effect_tree.Node(id);
1898 if (node->data.effect_changed) { 1912 if (node->data.effect_changed) {
1899 EffectNode* target_node = tree->effect_tree.Node(node->id); 1913 EffectNode* target_node = tree->effect_tree.Node(node->id);
1900 target_node->data.effect_changed = true; 1914 target_node->data.effect_changed = true;
1901 } 1915 }
1902 } 1916 }
1903 for (int id = 1; id < static_cast<int>(transform_tree.size()); ++id) { 1917 for (int id = 1; id < static_cast<int>(transform_tree.size()); ++id) {
1904 TransformNode* node = transform_tree.Node(id); 1918 TransformNode* node = transform_tree.Node(id);
1905 if (node->data.transform_changed) { 1919 if (node->data.transform_changed) {
1906 TransformNode* target_node = tree->transform_tree.Node(node->id); 1920 TransformNode* target_node = tree->transform_tree.Node(node->id);
1907 target_node->data.transform_changed = true; 1921 target_node->data.transform_changed = true;
1908 } 1922 }
1909 } 1923 }
1924 // Ensure that change tracking is updated even if property trees don't have
1925 // other reasons to get updated.
1926 tree->UpdateChangeTracking();
1910 tree->full_tree_damaged = full_tree_damaged; 1927 tree->full_tree_damaged = full_tree_damaged;
1911 } 1928 }
1912 1929
1913 void PropertyTrees::ResetAllChangeTracking(ResetFlags flag) { 1930 void PropertyTrees::ResetAllChangeTracking(ResetFlags flag) {
1914 switch (flag) { 1931 switch (flag) {
1915 case EFFECT_TREE: 1932 case EFFECT_TREE:
1916 effect_tree.ResetChangeTracking(); 1933 effect_tree.ResetChangeTracking();
1917 break; 1934 break;
1918 case TRANSFORM_TREE: 1935 case TRANSFORM_TREE:
1919 transform_tree.ResetChangeTracking(); 1936 transform_tree.ResetChangeTracking();
1920 break; 1937 break;
1921 case ALL_TREES: 1938 case ALL_TREES:
1922 transform_tree.ResetChangeTracking(); 1939 transform_tree.ResetChangeTracking();
1923 effect_tree.ResetChangeTracking(); 1940 effect_tree.ResetChangeTracking();
1924 } 1941 }
1925 changed = false; 1942 changed = false;
1926 full_tree_damaged = false; 1943 full_tree_damaged = false;
1927 } 1944 }
1928 1945
1929 } // namespace cc 1946 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698