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

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

Issue 2856043002: cc : Layers with singular transforms and copy request should be drawn (Closed)
Patch Set: comments Created 3 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
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 960 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 } 971 }
972 972
973 bool EffectTree::HasCopyRequests() const { 973 bool EffectTree::HasCopyRequests() const {
974 return !copy_requests_.empty(); 974 return !copy_requests_.empty();
975 } 975 }
976 976
977 void EffectTree::ClearCopyRequests() { 977 void EffectTree::ClearCopyRequests() {
978 for (auto& node : nodes()) { 978 for (auto& node : nodes()) {
979 node.subtree_has_copy_request = false; 979 node.subtree_has_copy_request = false;
980 node.has_copy_request = false; 980 node.has_copy_request = false;
981 node.closest_ancestor_with_copy_request_id = EffectTree::kInvalidNodeId;
981 } 982 }
982 983
983 // Any copy requests that are still left will be aborted (sending an empty 984 // Any copy requests that are still left will be aborted (sending an empty
984 // result) on destruction. 985 // result) on destruction.
985 copy_requests_.clear(); 986 copy_requests_.clear();
986 set_needs_update(true); 987 set_needs_update(true);
987 } 988 }
988 989
989 int EffectTree::ClosestAncestorWithCopyRequest(int id) const {
990 DCHECK_GE(id, EffectTree::kRootNodeId);
991 const EffectNode* node = Node(id);
992 while (node->id > EffectTree::kContentsRootNodeId) {
993 if (node->has_copy_request)
994 return node->id;
995
996 node = parent(node);
997 }
998
999 if (node->has_copy_request)
1000 return node->id;
1001 else
1002 return EffectTree::kInvalidNodeId;
1003 }
1004
1005 int EffectTree::LowestCommonAncestorWithRenderSurface(int id_1, 990 int EffectTree::LowestCommonAncestorWithRenderSurface(int id_1,
1006 int id_2) const { 991 int id_2) const {
1007 DCHECK(GetRenderSurface(id_1)); 992 DCHECK(GetRenderSurface(id_1));
1008 DCHECK(GetRenderSurface(id_2)); 993 DCHECK(GetRenderSurface(id_2));
1009 while (id_1 != id_2) { 994 while (id_1 != id_2) {
1010 if (id_1 < id_2) 995 if (id_1 < id_2)
1011 id_2 = Node(id_2)->target_id; 996 id_2 = Node(id_2)->target_id;
1012 else 997 else
1013 id_1 = Node(id_1)->target_id; 998 id_1 = Node(id_1)->target_id;
1014 } 999 }
(...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after
2142 const EffectNode* effect_node = effect_tree.Node(effect_id); 2127 const EffectNode* effect_node = effect_tree.Node(effect_id);
2143 2128
2144 if (effect_node->surface_contents_scale.x() != 0.0 && 2129 if (effect_node->surface_contents_scale.x() != 0.0 &&
2145 effect_node->surface_contents_scale.y() != 0.0) 2130 effect_node->surface_contents_scale.y() != 0.0)
2146 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(), 2131 screen_space_transform.Scale(1.0 / effect_node->surface_contents_scale.x(),
2147 1.0 / effect_node->surface_contents_scale.y()); 2132 1.0 / effect_node->surface_contents_scale.y());
2148 return screen_space_transform; 2133 return screen_space_transform;
2149 } 2134 }
2150 2135
2151 } // namespace cc 2136 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698