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

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

Issue 1310283002: cc: Avoid duplicate work when computing draw properties using property trees (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move RenderSurfaceDrawProperties to its own file Created 5 years, 3 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/draw_property_utils.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 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
11 #include "cc/layers/heads_up_display_layer_impl.h" 11 #include "cc/layers/heads_up_display_layer_impl.h"
12 #include "cc/layers/layer.h" 12 #include "cc/layers/layer.h"
13 #include "cc/layers/layer_impl.h" 13 #include "cc/layers/layer_impl.h"
14 #include "cc/layers/layer_iterator.h" 14 #include "cc/layers/layer_iterator.h"
15 #include "cc/layers/render_surface_draw_properties.h"
15 #include "cc/layers/render_surface_impl.h" 16 #include "cc/layers/render_surface_impl.h"
16 #include "cc/trees/draw_property_utils.h" 17 #include "cc/trees/draw_property_utils.h"
17 #include "cc/trees/layer_tree_host.h" 18 #include "cc/trees/layer_tree_host.h"
18 #include "cc/trees/layer_tree_impl.h" 19 #include "cc/trees/layer_tree_impl.h"
19 #include "ui/gfx/geometry/rect_conversions.h" 20 #include "ui/gfx/geometry/rect_conversions.h"
20 #include "ui/gfx/geometry/vector2d_conversions.h" 21 #include "ui/gfx/geometry/vector2d_conversions.h"
21 #include "ui/gfx/transform.h" 22 #include "ui/gfx/transform.h"
22 #include "ui/gfx/transform_util.h" 23 #include "ui/gfx/transform_util.h"
23 24
24 namespace cc { 25 namespace cc {
(...skipping 2236 matching lines...) Expand 10 before | Expand all | Expand 10 after
2261 if (delta > tolerance) 2262 if (delta > tolerance)
2262 return false; 2263 return false;
2263 } 2264 }
2264 } 2265 }
2265 2266
2266 return true; 2267 return true;
2267 } 2268 }
2268 2269
2269 void VerifyPropertyTreeValuesForSurface(RenderSurfaceImpl* render_surface, 2270 void VerifyPropertyTreeValuesForSurface(RenderSurfaceImpl* render_surface,
2270 PropertyTrees* property_trees) { 2271 PropertyTrees* property_trees) {
2271 const bool render_surface_draw_transforms_match = 2272 RenderSurfaceDrawProperties draw_properties;
2272 ApproximatelyEqual(render_surface->draw_transform(), 2273 ComputeSurfaceDrawPropertiesUsingPropertyTrees(render_surface, property_trees,
2273 DrawTransformOfRenderSurfaceFromPropertyTrees( 2274 &draw_properties);
2274 render_surface, property_trees->transform_tree)); 2275
2276 // content_rect has to be computed recursively, so is computed separately from
2277 // other draw properties.
2278 draw_properties.content_rect =
2279 render_surface->content_rect_from_property_trees();
2280
2281 const bool render_surface_draw_transforms_match = ApproximatelyEqual(
2282 render_surface->draw_transform(), draw_properties.draw_transform);
2275 CHECK(render_surface_draw_transforms_match) 2283 CHECK(render_surface_draw_transforms_match)
2276 << "expected: " << render_surface->draw_transform().ToString() 2284 << "expected: " << render_surface->draw_transform().ToString()
2277 << " actual: " 2285 << " actual: " << draw_properties.draw_transform.ToString();
2278 << DrawTransformOfRenderSurfaceFromPropertyTrees(
2279 render_surface, property_trees->transform_tree)
2280 .ToString();
2281 2286
2282 const bool render_surface_screen_space_transform_match = 2287 const bool render_surface_screen_space_transform_match =
2283 ApproximatelyEqual(render_surface->screen_space_transform(), 2288 ApproximatelyEqual(render_surface->screen_space_transform(),
2284 ScreenSpaceTransformOfRenderSurfaceFromPropertyTrees( 2289 draw_properties.screen_space_transform);
2285 render_surface, property_trees->transform_tree));
2286 CHECK(render_surface_screen_space_transform_match) 2290 CHECK(render_surface_screen_space_transform_match)
2287 << "expected: " << render_surface->screen_space_transform().ToString() 2291 << "expected: " << render_surface->screen_space_transform().ToString()
2288 << " actual: " 2292 << " actual: " << draw_properties.screen_space_transform.ToString();
2289 << ScreenSpaceTransformOfRenderSurfaceFromPropertyTrees(
2290 render_surface, property_trees->transform_tree)
2291 .ToString();
2292 2293
2293 const bool render_surface_replica_draw_transforms_match = 2294 const bool render_surface_replica_draw_transforms_match =
2294 ApproximatelyEqual(render_surface->replica_draw_transform(), 2295 ApproximatelyEqual(render_surface->replica_draw_transform(),
2295 DrawTransformOfRenderSurfaceReplicaFromPropertyTrees( 2296 draw_properties.replica_draw_transform);
2296 render_surface, property_trees->transform_tree));
2297 CHECK(render_surface_replica_draw_transforms_match) 2297 CHECK(render_surface_replica_draw_transforms_match)
2298 << "expected: " << render_surface->replica_draw_transform().ToString() 2298 << "expected: " << render_surface->replica_draw_transform().ToString()
2299 << " actual: " 2299 << " actual: " << draw_properties.replica_draw_transform.ToString();
2300 << DrawTransformOfRenderSurfaceReplicaFromPropertyTrees(
2301 render_surface, property_trees->transform_tree)
2302 .ToString();
2303 2300
2304 const bool render_surface_replica_screen_space_transforms_match = 2301 const bool render_surface_replica_screen_space_transforms_match =
2305 ApproximatelyEqual( 2302 ApproximatelyEqual(render_surface->replica_screen_space_transform(),
2306 render_surface->replica_screen_space_transform(), 2303 draw_properties.replica_screen_space_transform);
2307 ScreenSpaceTransformOfRenderSurfaceReplicaFromPropertyTrees(
2308 render_surface, property_trees->transform_tree));
2309 CHECK(render_surface_replica_screen_space_transforms_match) 2304 CHECK(render_surface_replica_screen_space_transforms_match)
2310 << "expected: " 2305 << "expected: "
2311 << render_surface->replica_screen_space_transform().ToString() 2306 << render_surface->replica_screen_space_transform().ToString()
2312 << " actual: " 2307 << " actual: "
2313 << ScreenSpaceTransformOfRenderSurfaceReplicaFromPropertyTrees( 2308 << draw_properties.replica_screen_space_transform.ToString();
2314 render_surface, property_trees->transform_tree)
2315 .ToString();
2316 2309
2317 CHECK_EQ(render_surface->is_clipped(), 2310 CHECK_EQ(render_surface->is_clipped(), draw_properties.is_clipped);
2318 RenderSurfaceIsClippedFromPropertyTrees(render_surface,
2319 property_trees->clip_tree));
2320 2311
2321 const bool render_surface_clip_rects_match = 2312 const bool render_surface_clip_rects_match = ApproximatelyEqual(
2322 ApproximatelyEqual(render_surface->clip_rect(), 2313 render_surface->clip_rect(), draw_properties.clip_rect);
2323 ClipRectOfRenderSurfaceFromPropertyTrees(
2324 render_surface, property_trees->clip_tree));
2325 CHECK(render_surface_clip_rects_match) 2314 CHECK(render_surface_clip_rects_match)
2326 << "expected: " << render_surface->clip_rect().ToString() << " actual: " 2315 << "expected: " << render_surface->clip_rect().ToString()
2327 << ClipRectOfRenderSurfaceFromPropertyTrees(render_surface, 2316 << " actual: " << draw_properties.clip_rect.ToString();
2328 property_trees->clip_tree)
2329 .ToString();
2330 2317
2331 const bool render_surface_content_rects_match = 2318 CHECK_EQ(render_surface->draw_opacity(), draw_properties.draw_opacity);
2332 ApproximatelyEqual(render_surface->content_rect(), 2319
2333 render_surface->content_rect_from_property_trees()); 2320 const bool render_surface_content_rects_match = ApproximatelyEqual(
2321 render_surface->content_rect(), draw_properties.content_rect);
2334 CHECK(render_surface_content_rects_match) 2322 CHECK(render_surface_content_rects_match)
2335 << "expected: " << render_surface->content_rect().ToString() 2323 << "expected: " << render_surface->content_rect().ToString()
2336 << " actual: " 2324 << " actual: " << draw_properties.content_rect.ToString();
2337 << render_surface->content_rect_from_property_trees().ToString();
2338
2339 CHECK_EQ(render_surface->draw_opacity(),
2340 DrawOpacityOfRenderSurfaceFromPropertyTrees(
2341 render_surface, property_trees->effect_tree));
2342 } 2325 }
2343 2326
2344 void VerifyPropertyTreeValuesForLayer(LayerImpl* current_layer, 2327 void VerifyPropertyTreeValuesForLayer(LayerImpl* current_layer,
2345 PropertyTrees* property_trees, 2328 PropertyTrees* property_trees,
2346 bool layers_always_allowed_lcd_text, 2329 bool layers_always_allowed_lcd_text,
2347 bool can_use_lcd_text) { 2330 bool can_use_lcd_text) {
2348 const bool visible_rects_match = 2331 DrawProperties draw_properties;
2349 ApproximatelyEqual(current_layer->visible_layer_rect(), 2332 ComputeLayerDrawPropertiesUsingPropertyTrees(
2350 current_layer->visible_rect_from_property_trees()); 2333 current_layer, property_trees, layers_always_allowed_lcd_text,
2334 can_use_lcd_text, &draw_properties);
2335
2336 const bool visible_rects_match = ApproximatelyEqual(
2337 current_layer->visible_layer_rect(), draw_properties.visible_layer_rect);
2351 CHECK(visible_rects_match) 2338 CHECK(visible_rects_match)
2352 << "expected: " << current_layer->visible_layer_rect().ToString() 2339 << "expected: " << current_layer->visible_layer_rect().ToString()
2353 << " actual: " 2340 << " actual: " << draw_properties.visible_layer_rect.ToString();
2354 << current_layer->visible_rect_from_property_trees().ToString();
2355 2341
2356 const bool draw_transforms_match = 2342 const bool draw_transforms_match = ApproximatelyEqual(
2357 ApproximatelyEqual(current_layer->draw_transform(), 2343 current_layer->draw_transform(), draw_properties.target_space_transform);
2358 DrawTransformFromPropertyTrees(
2359 current_layer, property_trees->transform_tree));
2360 CHECK(draw_transforms_match) 2344 CHECK(draw_transforms_match)
2361 << "expected: " << current_layer->draw_transform().ToString() 2345 << "expected: " << current_layer->draw_transform().ToString()
2362 << " actual: " 2346 << " actual: " << draw_properties.target_space_transform.ToString();
2363 << DrawTransformFromPropertyTrees(
2364 current_layer, property_trees->transform_tree).ToString();
2365 2347
2366 const bool draw_opacities_match = 2348 CHECK_EQ(current_layer->draw_opacity(), draw_properties.opacity);
2367 current_layer->draw_opacity() == 2349 CHECK_EQ(current_layer->can_use_lcd_text(), draw_properties.can_use_lcd_text);
2368 DrawOpacityFromPropertyTrees(current_layer, property_trees->effect_tree);
2369 CHECK(draw_opacities_match)
2370 << "expected: " << current_layer->draw_opacity()
2371 << " actual: " << DrawOpacityFromPropertyTrees(
2372 current_layer, property_trees->effect_tree);
2373
2374 const bool can_use_lcd_text_match =
2375 CanUseLcdTextFromPropertyTrees(
2376 current_layer, layers_always_allowed_lcd_text, can_use_lcd_text,
2377 property_trees) == current_layer->can_use_lcd_text();
2378 CHECK(can_use_lcd_text_match);
2379
2380 CHECK_EQ(current_layer->screen_space_transform_is_animating(), 2350 CHECK_EQ(current_layer->screen_space_transform_is_animating(),
2381 ScreenSpaceTransformIsAnimatingFromPropertyTrees( 2351 draw_properties.screen_space_transform_is_animating);
2382 current_layer, property_trees->transform_tree));
2383 2352
2384 const bool drawable_content_rects_match = 2353 const bool drawable_content_rects_match =
2385 ApproximatelyEqual(current_layer->drawable_content_rect(), 2354 ApproximatelyEqual(current_layer->drawable_content_rect(),
2386 DrawableContentRectFromPropertyTrees( 2355 draw_properties.drawable_content_rect);
2387 current_layer, property_trees->transform_tree));
2388 CHECK(drawable_content_rects_match) 2356 CHECK(drawable_content_rects_match)
2389 << "expected: " << current_layer->drawable_content_rect().ToString() 2357 << "expected: " << current_layer->drawable_content_rect().ToString()
2390 << " actual: " 2358 << " actual: " << draw_properties.drawable_content_rect.ToString();
2391 << DrawableContentRectFromPropertyTrees(current_layer,
2392 property_trees->transform_tree)
2393 .ToString();
2394 2359
2395 const bool clip_rects_match = ApproximatelyEqual( 2360 const bool clip_rects_match =
2396 current_layer->clip_rect(), 2361 ApproximatelyEqual(current_layer->clip_rect(), draw_properties.clip_rect);
2397 ClipRectFromPropertyTrees(current_layer, property_trees->transform_tree));
2398 CHECK(clip_rects_match) << "expected: " 2362 CHECK(clip_rects_match) << "expected: "
2399 << current_layer->clip_rect().ToString() 2363 << current_layer->clip_rect().ToString()
2400 << " actual: " 2364 << " actual: "
2401 << ClipRectFromPropertyTrees( 2365 << draw_properties.clip_rect.ToString();
2402 current_layer, property_trees->transform_tree)
2403 .ToString();
2404 2366
2405 CHECK_EQ(current_layer->draw_properties().maximum_animation_contents_scale, 2367 CHECK_EQ(current_layer->draw_properties().maximum_animation_contents_scale,
2406 MaximumAnimationTargetScaleFromPropertyTrees( 2368 draw_properties.maximum_animation_contents_scale);
2407 current_layer, property_trees->transform_tree));
2408 CHECK_EQ(current_layer->draw_properties().starting_animation_contents_scale, 2369 CHECK_EQ(current_layer->draw_properties().starting_animation_contents_scale,
2409 StartingAnimationScaleFromPropertyTrees( 2370 draw_properties.starting_animation_contents_scale);
2410 current_layer, property_trees->transform_tree));
2411 } 2371 }
2412 2372
2413 void VerifyPropertyTreeValues( 2373 void VerifyPropertyTreeValues(
2414 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs) { 2374 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs) {
2415 LayerIterator it, end; 2375 LayerIterator it, end;
2416 for (it = LayerIterator::Begin(inputs->render_surface_layer_list), 2376 for (it = LayerIterator::Begin(inputs->render_surface_layer_list),
2417 end = LayerIterator::End(inputs->render_surface_layer_list); 2377 end = LayerIterator::End(inputs->render_surface_layer_list);
2418 it != end; ++it) { 2378 it != end; ++it) {
2419 LayerImpl* current_layer = *it; 2379 LayerImpl* current_layer = *it;
2420 if (it.represents_target_render_surface()) 2380 if (it.represents_target_render_surface())
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
2575 if (render_to_separate_surface) { 2535 if (render_to_separate_surface) {
2576 if (IsRootLayer(layer)) { 2536 if (IsRootLayer(layer)) {
2577 // The root layer's surface content rect is always the entire viewport. 2537 // The root layer's surface content rect is always the entire viewport.
2578 gfx::Rect viewport = 2538 gfx::Rect viewport =
2579 gfx::ToEnclosingRect(property_trees->clip_tree.ViewportClip()); 2539 gfx::ToEnclosingRect(property_trees->clip_tree.ViewportClip());
2580 layer->render_surface()->SetAccumulatedContentRect(viewport); 2540 layer->render_surface()->SetAccumulatedContentRect(viewport);
2581 } else { 2541 } else {
2582 // If the owning layer of a render surface draws content, the content 2542 // If the owning layer of a render surface draws content, the content
2583 // rect of the render surface is initialized to the drawable content 2543 // rect of the render surface is initialized to the drawable content
2584 // rect of the layer. 2544 // rect of the layer.
2585 gfx::Rect content_rect = 2545 gfx::Rect content_rect = layer->DrawsContent()
2586 layer->DrawsContent() ? DrawableContentRectFromPropertyTrees( 2546 ? layer->drawable_content_rect()
2587 layer, property_trees->transform_tree) 2547 : gfx::Rect();
2588 : gfx::Rect();
2589 layer->render_surface()->SetAccumulatedContentRect(content_rect); 2548 layer->render_surface()->SetAccumulatedContentRect(content_rect);
2590 } 2549 }
2591 } else if (!layer_should_be_skipped && 2550 } else if (!layer_should_be_skipped &&
2592 !IsRootLayer(layer->render_target())) { 2551 !IsRootLayer(layer->render_target())) {
2593 // In this case, the layer's drawable content rect can expand the 2552 // In this case, the layer's drawable content rect can expand the
2594 // content rect of the render surface it is drawing into. 2553 // content rect of the render surface it is drawing into.
2595 gfx::Rect surface_content_rect = 2554 gfx::Rect surface_content_rect =
2596 layer->render_target()->render_surface()->accumulated_content_rect(); 2555 layer->render_target()->render_surface()->accumulated_content_rect();
2597 surface_content_rect.Union(DrawableContentRectFromPropertyTrees( 2556 surface_content_rect.Union(layer->drawable_content_rect());
2598 layer, property_trees->transform_tree));
2599 layer->render_target()->render_surface()->SetAccumulatedContentRect( 2557 layer->render_target()->render_surface()->SetAccumulatedContentRect(
2600 surface_content_rect); 2558 surface_content_rect);
2601 } 2559 }
2602 } 2560 }
2603 2561
2604 for (auto& child_layer : layer->children()) { 2562 for (auto& child_layer : layer->children()) {
2605 CalculateRenderSurfaceLayerListInternal( 2563 CalculateRenderSurfaceLayerListInternal(
2606 child_layer, property_trees, render_surface_layer_list, descendants, 2564 child_layer, property_trees, render_surface_layer_list, descendants,
2607 nearest_occlusion_immune_ancestor, layer_is_drawn, 2565 nearest_occlusion_immune_ancestor, layer_is_drawn,
2608 can_render_to_separate_surface, current_render_surface_layer_list_id, 2566 can_render_to_separate_surface, current_render_surface_layer_list_id,
(...skipping 18 matching lines...) Expand all
2627 } 2585 }
2628 2586
2629 if (render_to_separate_surface && !IsRootLayer(layer) && 2587 if (render_to_separate_surface && !IsRootLayer(layer) &&
2630 layer->render_surface()->layer_list().empty()) { 2588 layer->render_surface()->layer_list().empty()) {
2631 RemoveSurfaceForEarlyExit(layer, render_surface_layer_list); 2589 RemoveSurfaceForEarlyExit(layer, render_surface_layer_list);
2632 return; 2590 return;
2633 } 2591 }
2634 2592
2635 if (verify_property_trees && render_to_separate_surface && 2593 if (verify_property_trees && render_to_separate_surface &&
2636 !IsRootLayer(layer)) { 2594 !IsRootLayer(layer)) {
2637 if (!layer->replica_layer() && 2595 if (!layer->replica_layer() && layer->render_surface()->is_clipped()) {
2638 RenderSurfaceIsClippedFromPropertyTrees(layer->render_surface(),
2639 property_trees->clip_tree)) {
2640 // Here, we clip the render surface's content rect with its clip rect. 2596 // Here, we clip the render surface's content rect with its clip rect.
2641 // As the clip rect of render surface is in the surface's target space, 2597 // As the clip rect of render surface is in the surface's target space,
2642 // we first map the content rect into the target space, intersect it with 2598 // we first map the content rect into the target space, intersect it with
2643 // clip rect and project back the result to the surface space. 2599 // clip rect and project back the result to the surface space.
2644 gfx::Rect surface_content_rect = 2600 gfx::Rect surface_content_rect =
2645 layer->render_surface()->accumulated_content_rect(); 2601 layer->render_surface()->accumulated_content_rect();
2646 2602
2647 if (!surface_content_rect.IsEmpty()) { 2603 if (!surface_content_rect.IsEmpty()) {
2648 gfx::Rect surface_clip_rect = LayerTreeHostCommon::CalculateVisibleRect( 2604 gfx::Rect surface_clip_rect = LayerTreeHostCommon::CalculateVisibleRect(
2649 ClipRectOfRenderSurfaceFromPropertyTrees(layer->render_surface(), 2605 layer->render_surface()->clip_rect(), surface_content_rect,
2650 property_trees->clip_tree), 2606 layer->render_surface()->draw_transform());
2651 surface_content_rect,
2652 DrawTransformOfRenderSurfaceFromPropertyTrees(
2653 layer->render_surface(), property_trees->transform_tree));
2654 surface_content_rect.Intersect(surface_clip_rect); 2607 surface_content_rect.Intersect(surface_clip_rect);
2655 layer->render_surface()->SetAccumulatedContentRect( 2608 layer->render_surface()->SetAccumulatedContentRect(
2656 surface_content_rect); 2609 surface_content_rect);
2657 } 2610 }
2658 } 2611 }
2659 layer->render_surface()->SetContentRectFromPropertyTrees( 2612 layer->render_surface()->SetContentRectFromPropertyTrees(
2660 layer->render_surface()->accumulated_content_rect()); 2613 layer->render_surface()->accumulated_content_rect());
2661 if (!IsRootLayer(layer->parent()->render_target())) { 2614 if (!IsRootLayer(layer->parent()->render_target())) {
2662 // The surface's drawable content rect may expand the content rect 2615 // The surface's drawable content rect may expand the content rect
2663 // of its target's surface(surface's target's surface). 2616 // of its target's surface(surface's target's surface).
2664 gfx::Rect surface_target_rect = layer->parent() 2617 gfx::Rect surface_target_rect = layer->parent()
2665 ->render_target() 2618 ->render_target()
2666 ->render_surface() 2619 ->render_surface()
2667 ->accumulated_content_rect(); 2620 ->accumulated_content_rect();
2668 surface_target_rect.Union(DrawableContentRectOfSurfaceFromPropertyTrees( 2621 surface_target_rect.Union(
2669 layer->render_surface(), property_trees->transform_tree)); 2622 gfx::ToEnclosedRect(layer->render_surface()->DrawableContentRect()));
2670 layer->parent() 2623 layer->parent()
2671 ->render_target() 2624 ->render_target()
2672 ->render_surface() 2625 ->render_surface()
2673 ->SetAccumulatedContentRect(surface_target_rect); 2626 ->SetAccumulatedContentRect(surface_target_rect);
2674 } 2627 }
2675 } 2628 }
2676 2629
2677 if (verify_property_trees && IsRootLayer(layer)) 2630 if (verify_property_trees && IsRootLayer(layer))
2678 layer->render_surface()->SetContentRectFromPropertyTrees( 2631 layer->render_surface()->SetContentRectFromPropertyTrees(
2679 layer->render_surface()->accumulated_content_rect()); 2632 layer->render_surface()->accumulated_content_rect());
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
2824 2777
2825 PropertyTrees* GetPropertyTrees(Layer* layer) { 2778 PropertyTrees* GetPropertyTrees(Layer* layer) {
2826 return layer->layer_tree_host()->property_trees(); 2779 return layer->layer_tree_host()->property_trees();
2827 } 2780 }
2828 2781
2829 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { 2782 PropertyTrees* GetPropertyTrees(LayerImpl* layer) {
2830 return layer->layer_tree_impl()->property_trees(); 2783 return layer->layer_tree_impl()->property_trees();
2831 } 2784 }
2832 2785
2833 } // namespace cc 2786 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/draw_property_utils.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698