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

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

Issue 1010663002: CC Animations: Redirect all compositor animation requests to AnimationHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@introduce
Patch Set: Rebase and fix conflicts (HasPotentiallyRunningTransformAnimation) Created 5 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/layer_tree_impl.cc ('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 "cc/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 template <typename LayerType> 51 template <typename LayerType>
52 static ClipNode* GetClipParent(const DataForRecursion<LayerType>& data, 52 static ClipNode* GetClipParent(const DataForRecursion<LayerType>& data,
53 LayerType* layer) { 53 LayerType* layer) {
54 const bool inherits_clip = !layer->parent() || !layer->clip_parent(); 54 const bool inherits_clip = !layer->parent() || !layer->clip_parent();
55 const int id = inherits_clip ? data.clip_tree_parent 55 const int id = inherits_clip ? data.clip_tree_parent
56 : layer->clip_parent()->clip_tree_index(); 56 : layer->clip_parent()->clip_tree_index();
57 return data.clip_tree->Node(id); 57 return data.clip_tree->Node(id);
58 } 58 }
59 59
60 template <typename LayerType> 60 template <typename LayerType>
61 static bool HasPotentiallyRunningAnimation(LayerType* layer,
62 Animation::TargetProperty property) {
63 if (Animation* animation =
64 layer->layer_animation_controller()->GetAnimation(property)) {
65 return !animation->is_finished();
66 }
67 return false;
68 }
69
70 template <typename LayerType>
71 static bool RequiresClipNode(LayerType* layer, 61 static bool RequiresClipNode(LayerType* layer,
72 const DataForRecursion<LayerType>& data, 62 const DataForRecursion<LayerType>& data,
73 int parent_transform_id, 63 int parent_transform_id,
74 bool is_clipped) { 64 bool is_clipped) {
75 const bool render_surface_applies_clip = 65 const bool render_surface_applies_clip =
76 layer->render_surface() && is_clipped; 66 layer->render_surface() && is_clipped;
77 const bool render_surface_may_grow_due_to_clip_children = 67 const bool render_surface_may_grow_due_to_clip_children =
78 layer->render_surface() && layer->num_unclipped_descendants() > 0; 68 layer->render_surface() && layer->num_unclipped_descendants() > 0;
79 69
80 if (!layer->parent() || layer->masks_to_bounds() || layer->mask_layer() || 70 if (!layer->parent() || layer->masks_to_bounds() || layer->mask_layer() ||
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 const bool is_root = !layer->parent(); 154 const bool is_root = !layer->parent();
165 const bool is_page_scale_application_layer = 155 const bool is_page_scale_application_layer =
166 layer->parent() && layer->parent() == data_from_ancestor.page_scale_layer; 156 layer->parent() && layer->parent() == data_from_ancestor.page_scale_layer;
167 const bool is_scrollable = layer->scrollable(); 157 const bool is_scrollable = layer->scrollable();
168 const bool is_fixed = layer->position_constraint().is_fixed_position(); 158 const bool is_fixed = layer->position_constraint().is_fixed_position();
169 159
170 const bool has_significant_transform = 160 const bool has_significant_transform =
171 !layer->transform().IsIdentityOr2DTranslation(); 161 !layer->transform().IsIdentityOr2DTranslation();
172 162
173 const bool has_potentially_animated_transform = 163 const bool has_potentially_animated_transform =
174 HasPotentiallyRunningAnimation(layer, Animation::TRANSFORM); 164 layer->HasPotentiallyRunningTransformAnimation();
175 165 const bool has_animated_transform = layer->TransformIsAnimating();
176 const bool has_animated_transform =
177 layer->layer_animation_controller()->IsAnimatingProperty(
178 Animation::TRANSFORM);
179 166
180 const bool has_surface = !!layer->render_surface(); 167 const bool has_surface = !!layer->render_surface();
181 168
182 bool requires_node = is_root || is_scrollable || has_significant_transform || 169 bool requires_node = is_root || is_scrollable || has_significant_transform ||
183 has_potentially_animated_transform || has_surface || 170 has_potentially_animated_transform || has_surface ||
184 is_page_scale_application_layer; 171 is_page_scale_application_layer;
185 172
186 LayerType* transform_parent = GetTransformParent(data_from_ancestor, layer); 173 LayerType* transform_parent = GetTransformParent(data_from_ancestor, layer);
187 174
188 int parent_index = 0; 175 int parent_index = 0;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 287
301 data_for_children->scroll_compensation_adjustment += 288 data_for_children->scroll_compensation_adjustment +=
302 layer->ScrollCompensationAdjustment() - node->data.scroll_snap; 289 layer->ScrollCompensationAdjustment() - node->data.scroll_snap;
303 290
304 node->owner_id = layer->id(); 291 node->owner_id = layer->id();
305 292
306 return true; 293 return true;
307 } 294 }
308 295
309 bool IsAnimatingOpacity(Layer* layer) { 296 bool IsAnimatingOpacity(Layer* layer) {
310 return HasPotentiallyRunningAnimation(layer, Animation::OPACITY) || 297 return layer->HasPotentiallyRunningOpacityAnimation() ||
311 layer->OpacityCanAnimateOnImplThread(); 298 layer->OpacityCanAnimateOnImplThread();
312 } 299 }
313 300
314 bool IsAnimatingOpacity(LayerImpl* layer) { 301 bool IsAnimatingOpacity(LayerImpl* layer) {
315 return HasPotentiallyRunningAnimation(layer, Animation::OPACITY); 302 return layer->HasPotentiallyRunningOpacityAnimation();
316 } 303 }
317 304
318 template <typename LayerType> 305 template <typename LayerType>
319 void AddOpacityNodeIfNeeded( 306 void AddOpacityNodeIfNeeded(
320 const DataForRecursion<LayerType>& data_from_ancestor, 307 const DataForRecursion<LayerType>& data_from_ancestor,
321 LayerType* layer, 308 LayerType* layer,
322 DataForRecursion<LayerType>* data_for_children) { 309 DataForRecursion<LayerType>* data_for_children) {
323 const bool is_root = !layer->parent(); 310 const bool is_root = !layer->parent();
324 const bool has_transparency = layer->opacity() != 1.f; 311 const bool has_transparency = layer->opacity() != 1.f;
325 const bool has_animated_opacity = IsAnimatingOpacity(layer); 312 const bool has_animated_opacity = IsAnimatingOpacity(layer);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 float device_scale_factor, 432 float device_scale_factor,
446 const gfx::Rect& viewport, 433 const gfx::Rect& viewport,
447 const gfx::Transform& device_transform, 434 const gfx::Transform& device_transform,
448 PropertyTrees* property_trees) { 435 PropertyTrees* property_trees) {
449 BuildPropertyTreesTopLevelInternal( 436 BuildPropertyTreesTopLevelInternal(
450 root_layer, page_scale_layer, page_scale_factor, device_scale_factor, 437 root_layer, page_scale_layer, page_scale_factor, device_scale_factor,
451 viewport, device_transform, property_trees); 438 viewport, device_transform, property_trees);
452 } 439 }
453 440
454 } // namespace cc 441 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698