| OLD | NEW |
| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 const gfx::Size& device_viewport_size, | 71 const gfx::Size& device_viewport_size, |
| 72 const gfx::Transform& device_transform, | 72 const gfx::Transform& device_transform, |
| 73 float device_scale_factor, | 73 float device_scale_factor, |
| 74 float page_scale_factor, | 74 float page_scale_factor, |
| 75 const LayerImpl* page_scale_layer, | 75 const LayerImpl* page_scale_layer, |
| 76 const LayerImpl* inner_viewport_scroll_layer, | 76 const LayerImpl* inner_viewport_scroll_layer, |
| 77 const LayerImpl* outer_viewport_scroll_layer, | 77 const LayerImpl* outer_viewport_scroll_layer, |
| 78 const gfx::Vector2dF& elastic_overscroll, | 78 const gfx::Vector2dF& elastic_overscroll, |
| 79 const LayerImpl* elastic_overscroll_application_layer, | 79 const LayerImpl* elastic_overscroll_application_layer, |
| 80 int max_texture_size, | 80 int max_texture_size, |
| 81 bool can_render_to_separate_surface, | |
| 82 bool can_adjust_raster_scales, | 81 bool can_adjust_raster_scales, |
| 83 bool verify_clip_tree_calculations, | 82 bool verify_clip_tree_calculations, |
| 84 bool verify_visible_rect_calculations, | 83 bool verify_visible_rect_calculations, |
| 85 LayerImplList* render_surface_layer_list, | 84 LayerImplList* render_surface_layer_list, |
| 86 PropertyTrees* property_trees) | 85 PropertyTrees* property_trees) |
| 87 : root_layer(root_layer), | 86 : root_layer(root_layer), |
| 88 device_viewport_size(device_viewport_size), | 87 device_viewport_size(device_viewport_size), |
| 89 device_transform(device_transform), | 88 device_transform(device_transform), |
| 90 device_scale_factor(device_scale_factor), | 89 device_scale_factor(device_scale_factor), |
| 91 page_scale_factor(page_scale_factor), | 90 page_scale_factor(page_scale_factor), |
| 92 page_scale_layer(page_scale_layer), | 91 page_scale_layer(page_scale_layer), |
| 93 inner_viewport_scroll_layer(inner_viewport_scroll_layer), | 92 inner_viewport_scroll_layer(inner_viewport_scroll_layer), |
| 94 outer_viewport_scroll_layer(outer_viewport_scroll_layer), | 93 outer_viewport_scroll_layer(outer_viewport_scroll_layer), |
| 95 elastic_overscroll(elastic_overscroll), | 94 elastic_overscroll(elastic_overscroll), |
| 96 elastic_overscroll_application_layer( | 95 elastic_overscroll_application_layer( |
| 97 elastic_overscroll_application_layer), | 96 elastic_overscroll_application_layer), |
| 98 max_texture_size(max_texture_size), | 97 max_texture_size(max_texture_size), |
| 99 can_render_to_separate_surface(can_render_to_separate_surface), | |
| 100 can_adjust_raster_scales(can_adjust_raster_scales), | 98 can_adjust_raster_scales(can_adjust_raster_scales), |
| 101 verify_clip_tree_calculations(verify_clip_tree_calculations), | 99 verify_clip_tree_calculations(verify_clip_tree_calculations), |
| 102 verify_visible_rect_calculations(verify_visible_rect_calculations), | 100 verify_visible_rect_calculations(verify_visible_rect_calculations), |
| 103 render_surface_layer_list(render_surface_layer_list), | 101 render_surface_layer_list(render_surface_layer_list), |
| 104 property_trees(property_trees) {} | 102 property_trees(property_trees) {} |
| 105 | 103 |
| 106 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: | 104 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: |
| 107 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer, | 105 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer, |
| 108 const gfx::Size& device_viewport_size, | 106 const gfx::Size& device_viewport_size, |
| 109 const gfx::Transform& device_transform, | 107 const gfx::Transform& device_transform, |
| 110 float device_scale_factor, | 108 float device_scale_factor, |
| 111 LayerImplList* render_surface_layer_list) | 109 LayerImplList* render_surface_layer_list) |
| 112 : CalcDrawPropsImplInputs(root_layer, | 110 : CalcDrawPropsImplInputs(root_layer, |
| 113 device_viewport_size, | 111 device_viewport_size, |
| 114 device_transform, | 112 device_transform, |
| 115 device_scale_factor, | 113 device_scale_factor, |
| 116 1.f, | 114 1.f, |
| 117 NULL, | 115 NULL, |
| 118 NULL, | 116 NULL, |
| 119 NULL, | 117 NULL, |
| 120 gfx::Vector2dF(), | 118 gfx::Vector2dF(), |
| 121 NULL, | 119 NULL, |
| 122 std::numeric_limits<int>::max() / 2, | 120 std::numeric_limits<int>::max() / 2, |
| 123 true, | |
| 124 false, | 121 false, |
| 125 true, | 122 true, |
| 126 true, | 123 true, |
| 127 render_surface_layer_list, | 124 render_surface_layer_list, |
| 128 GetPropertyTrees(root_layer)) { | 125 GetPropertyTrees(root_layer)) { |
| 129 DCHECK(root_layer); | 126 DCHECK(root_layer); |
| 130 DCHECK(render_surface_layer_list); | 127 DCHECK(render_surface_layer_list); |
| 131 } | 128 } |
| 132 | 129 |
| 133 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: | 130 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 } | 275 } |
| 279 | 276 |
| 280 enum PropertyTreeOption { | 277 enum PropertyTreeOption { |
| 281 BUILD_PROPERTY_TREES_IF_NEEDED, | 278 BUILD_PROPERTY_TREES_IF_NEEDED, |
| 282 DONT_BUILD_PROPERTY_TREES | 279 DONT_BUILD_PROPERTY_TREES |
| 283 }; | 280 }; |
| 284 | 281 |
| 285 static void ComputeInitialRenderSurfaceLayerList( | 282 static void ComputeInitialRenderSurfaceLayerList( |
| 286 LayerTreeImpl* layer_tree_impl, | 283 LayerTreeImpl* layer_tree_impl, |
| 287 PropertyTrees* property_trees, | 284 PropertyTrees* property_trees, |
| 288 LayerImplList* render_surface_layer_list, | 285 LayerImplList* render_surface_layer_list) { |
| 289 bool can_render_to_separate_surface) { | |
| 290 // Add all non-skipped surfaces to the initial render surface layer list. Add | 286 // Add all non-skipped surfaces to the initial render surface layer list. Add |
| 291 // all non-skipped layers to the layer list of their target surface, and | 287 // all non-skipped layers to the layer list of their target surface, and |
| 292 // add their content rect to their target surface's accumulated content rect. | 288 // add their content rect to their target surface's accumulated content rect. |
| 293 for (LayerImpl* layer : *layer_tree_impl) { | 289 for (LayerImpl* layer : *layer_tree_impl) { |
| 294 if (layer->render_surface()) { | 290 if (layer->render_surface()) { |
| 295 layer->ClearRenderSurfaceLayerList(); | 291 layer->ClearRenderSurfaceLayerList(); |
| 296 ClearMaskLayersAreDrawnRenderSurfaceLayerListMembers( | 292 ClearMaskLayersAreDrawnRenderSurfaceLayerListMembers( |
| 297 layer->render_surface()); | 293 layer->render_surface()); |
| 298 } | 294 } |
| 299 layer->set_is_drawn_render_surface_layer_list_member(false); | 295 layer->set_is_drawn_render_surface_layer_list_member(false); |
| 300 | 296 |
| 301 bool is_root = layer_tree_impl->IsRootLayer(layer); | 297 bool is_root = layer_tree_impl->IsRootLayer(layer); |
| 302 bool skip_layer = !is_root && draw_property_utils::LayerShouldBeSkipped( | 298 bool skip_layer = !is_root && draw_property_utils::LayerShouldBeSkipped( |
| 303 layer, property_trees->transform_tree, | 299 layer, property_trees->transform_tree, |
| 304 property_trees->effect_tree); | 300 property_trees->effect_tree); |
| 305 if (skip_layer) | 301 if (skip_layer) |
| 306 continue; | 302 continue; |
| 307 | 303 |
| 308 bool render_to_separate_surface = | 304 bool render_to_separate_surface = is_root || layer->render_surface(); |
| 309 is_root || (can_render_to_separate_surface && layer->render_surface()); | |
| 310 | |
| 311 if (render_to_separate_surface) { | 305 if (render_to_separate_surface) { |
| 312 DCHECK(layer->render_surface()); | 306 DCHECK(layer->render_surface()); |
| 313 DCHECK(layer->render_target() == layer->render_surface()); | 307 DCHECK(layer->render_target() == layer->render_surface()); |
| 314 RenderSurfaceImpl* surface = layer->render_surface(); | 308 RenderSurfaceImpl* surface = layer->render_surface(); |
| 315 surface->ClearAccumulatedContentRect(); | 309 surface->ClearAccumulatedContentRect(); |
| 316 render_surface_layer_list->push_back(layer); | 310 render_surface_layer_list->push_back(layer); |
| 317 if (is_root) { | 311 if (is_root) { |
| 318 // The root surface does not contribute to any other surface, it has no | 312 // The root surface does not contribute to any other surface, it has no |
| 319 // target. | 313 // target. |
| 320 layer->render_surface()->set_contributes_to_drawn_surface(false); | 314 layer->render_surface()->set_contributes_to_drawn_surface(false); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 } | 421 } |
| 428 SetMaskLayersAreDrawnRenderSurfaceLayerListMembers(surface, property_trees); | 422 SetMaskLayersAreDrawnRenderSurfaceLayerListMembers(surface, property_trees); |
| 429 final_surface_list->push_back(layer); | 423 final_surface_list->push_back(layer); |
| 430 } | 424 } |
| 431 } | 425 } |
| 432 | 426 |
| 433 static void CalculateRenderSurfaceLayerList( | 427 static void CalculateRenderSurfaceLayerList( |
| 434 LayerTreeImpl* layer_tree_impl, | 428 LayerTreeImpl* layer_tree_impl, |
| 435 PropertyTrees* property_trees, | 429 PropertyTrees* property_trees, |
| 436 LayerImplList* render_surface_layer_list, | 430 LayerImplList* render_surface_layer_list, |
| 437 const bool can_render_to_separate_surface, | |
| 438 const int max_texture_size) { | 431 const int max_texture_size) { |
| 439 // This calculates top level Render Surface Layer List, and Layer List for all | 432 // This calculates top level Render Surface Layer List, and Layer List for all |
| 440 // Render Surfaces. | 433 // Render Surfaces. |
| 441 // |render_surface_layer_list| is the top level RenderSurfaceLayerList. | 434 // |render_surface_layer_list| is the top level RenderSurfaceLayerList. |
| 442 | 435 |
| 443 LayerImplList initial_render_surface_list; | 436 LayerImplList initial_render_surface_list; |
| 444 | 437 |
| 445 // First compute an RSLL that might include surfaces that later turn out to | 438 // First compute an RSLL that might include surfaces that later turn out to |
| 446 // have an empty content rect. After surface content rects are computed, | 439 // have an empty content rect. After surface content rects are computed, |
| 447 // produce a final RSLL that omits empty surfaces. | 440 // produce a final RSLL that omits empty surfaces. |
| 448 ComputeInitialRenderSurfaceLayerList(layer_tree_impl, property_trees, | 441 ComputeInitialRenderSurfaceLayerList(layer_tree_impl, property_trees, |
| 449 &initial_render_surface_list, | 442 &initial_render_surface_list); |
| 450 can_render_to_separate_surface); | |
| 451 ComputeSurfaceContentRects(layer_tree_impl, property_trees, | 443 ComputeSurfaceContentRects(layer_tree_impl, property_trees, |
| 452 &initial_render_surface_list, max_texture_size); | 444 &initial_render_surface_list, max_texture_size); |
| 453 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees, | 445 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees, |
| 454 &initial_render_surface_list, | 446 &initial_render_surface_list, |
| 455 render_surface_layer_list); | 447 render_surface_layer_list); |
| 456 } | 448 } |
| 457 | 449 |
| 458 void CalculateDrawPropertiesInternal( | 450 void CalculateDrawPropertiesInternal( |
| 459 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs, | 451 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs, |
| 460 PropertyTreeOption property_tree_option) { | 452 PropertyTreeOption property_tree_option) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 475 "LayerTreeHostCommon::ComputeVisibleRectsWithPropertyTrees"); | 467 "LayerTreeHostCommon::ComputeVisibleRectsWithPropertyTrees"); |
| 476 } | 468 } |
| 477 | 469 |
| 478 draw_property_utils::BuildPropertyTreesAndComputeVisibleRects( | 470 draw_property_utils::BuildPropertyTreesAndComputeVisibleRects( |
| 479 inputs->root_layer, inputs->page_scale_layer, | 471 inputs->root_layer, inputs->page_scale_layer, |
| 480 inputs->inner_viewport_scroll_layer, | 472 inputs->inner_viewport_scroll_layer, |
| 481 inputs->outer_viewport_scroll_layer, | 473 inputs->outer_viewport_scroll_layer, |
| 482 inputs->elastic_overscroll_application_layer, | 474 inputs->elastic_overscroll_application_layer, |
| 483 inputs->elastic_overscroll, inputs->page_scale_factor, | 475 inputs->elastic_overscroll, inputs->page_scale_factor, |
| 484 inputs->device_scale_factor, gfx::Rect(inputs->device_viewport_size), | 476 inputs->device_scale_factor, gfx::Rect(inputs->device_viewport_size), |
| 485 inputs->device_transform, inputs->can_render_to_separate_surface, | 477 inputs->device_transform, inputs->property_trees, |
| 486 inputs->property_trees, &visible_layer_list); | 478 &visible_layer_list); |
| 487 | 479 |
| 488 // Property trees are normally constructed on the main thread and | 480 // Property trees are normally constructed on the main thread and |
| 489 // passed to compositor thread. Source to parent updates on them are not | 481 // passed to compositor thread. Source to parent updates on them are not |
| 490 // allowed in the compositor thread. Some tests build them on the | 482 // allowed in the compositor thread. Some tests build them on the |
| 491 // compositor thread, so we need to explicitly disallow source to parent | 483 // compositor thread, so we need to explicitly disallow source to parent |
| 492 // updates when they are built on compositor thread. | 484 // updates when they are built on compositor thread. |
| 493 inputs->property_trees->transform_tree | 485 inputs->property_trees->transform_tree |
| 494 .set_source_to_parent_updates_allowed(false); | 486 .set_source_to_parent_updates_allowed(false); |
| 495 if (should_measure_property_tree_performance) { | 487 if (should_measure_property_tree_performance) { |
| 496 TRACE_EVENT_END0( | 488 TRACE_EVENT_END0( |
| (...skipping 24 matching lines...) Expand all Loading... |
| 521 property_trees->clip_tree.SetViewportClip( | 513 property_trees->clip_tree.SetViewportClip( |
| 522 gfx::RectF(gfx::SizeF(inputs->device_viewport_size))); | 514 gfx::RectF(gfx::SizeF(inputs->device_viewport_size))); |
| 523 float page_scale_factor_for_root = | 515 float page_scale_factor_for_root = |
| 524 inputs->page_scale_layer == inputs->root_layer | 516 inputs->page_scale_layer == inputs->root_layer |
| 525 ? inputs->page_scale_factor | 517 ? inputs->page_scale_factor |
| 526 : 1.f; | 518 : 1.f; |
| 527 property_trees->transform_tree.SetRootTransformsAndScales( | 519 property_trees->transform_tree.SetRootTransformsAndScales( |
| 528 inputs->device_scale_factor, page_scale_factor_for_root, | 520 inputs->device_scale_factor, page_scale_factor_for_root, |
| 529 inputs->device_transform, inputs->root_layer->position()); | 521 inputs->device_transform, inputs->root_layer->position()); |
| 530 draw_property_utils::ComputeVisibleRects( | 522 draw_property_utils::ComputeVisibleRects( |
| 531 inputs->root_layer, inputs->property_trees, | 523 inputs->root_layer, inputs->property_trees, &visible_layer_list); |
| 532 inputs->can_render_to_separate_surface, &visible_layer_list); | |
| 533 break; | 524 break; |
| 534 } | 525 } |
| 535 } | 526 } |
| 536 | 527 |
| 537 if (should_measure_property_tree_performance) { | 528 if (should_measure_property_tree_performance) { |
| 538 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), | 529 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), |
| 539 "LayerTreeHostCommon::CalculateDrawProperties"); | 530 "LayerTreeHostCommon::CalculateDrawProperties"); |
| 540 } | 531 } |
| 541 | 532 |
| 542 DCHECK(inputs->can_render_to_separate_surface == | |
| 543 inputs->property_trees->non_root_surfaces_enabled); | |
| 544 for (LayerImpl* layer : visible_layer_list) { | 533 for (LayerImpl* layer : visible_layer_list) { |
| 545 draw_property_utils::ComputeLayerDrawProperties(layer, | 534 draw_property_utils::ComputeLayerDrawProperties(layer, |
| 546 inputs->property_trees); | 535 inputs->property_trees); |
| 547 } | 536 } |
| 548 | 537 |
| 549 CalculateRenderSurfaceLayerList( | 538 CalculateRenderSurfaceLayerList( |
| 550 inputs->root_layer->layer_tree_impl(), inputs->property_trees, | 539 inputs->root_layer->layer_tree_impl(), inputs->property_trees, |
| 551 inputs->render_surface_layer_list, inputs->can_render_to_separate_surface, | 540 inputs->render_surface_layer_list, inputs->max_texture_size); |
| 552 inputs->max_texture_size); | |
| 553 | 541 |
| 554 if (inputs->verify_clip_tree_calculations) | 542 if (inputs->verify_clip_tree_calculations) |
| 555 draw_property_utils::VerifyClipTreeCalculations(visible_layer_list, | 543 draw_property_utils::VerifyClipTreeCalculations(visible_layer_list, |
| 556 inputs->property_trees); | 544 inputs->property_trees); |
| 557 if (inputs->verify_visible_rect_calculations) | 545 if (inputs->verify_visible_rect_calculations) |
| 558 draw_property_utils::VerifyVisibleRectsCalculations(visible_layer_list, | 546 draw_property_utils::VerifyVisibleRectsCalculations(visible_layer_list, |
| 559 inputs->property_trees); | 547 inputs->property_trees); |
| 560 | 548 |
| 561 if (should_measure_property_tree_performance) { | 549 if (should_measure_property_tree_performance) { |
| 562 TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), | 550 TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), |
| 563 "LayerTreeHostCommon::CalculateDrawProperties"); | 551 "LayerTreeHostCommon::CalculateDrawProperties"); |
| 564 } | 552 } |
| 565 | 553 |
| 566 // A root layer render_surface should always exist after | 554 // A root layer render_surface should always exist after |
| 567 // CalculateDrawProperties. | 555 // CalculateDrawProperties. |
| 568 DCHECK(inputs->root_layer->render_surface()); | 556 DCHECK(inputs->root_layer->render_surface()); |
| 569 } | 557 } |
| 570 | 558 |
| 571 void LayerTreeHostCommon::CalculateDrawPropertiesForTesting( | 559 void LayerTreeHostCommon::CalculateDrawPropertiesForTesting( |
| 572 CalcDrawPropsMainInputsForTesting* inputs) { | 560 CalcDrawPropsMainInputsForTesting* inputs) { |
| 573 LayerList update_layer_list; | 561 LayerList update_layer_list; |
| 574 bool can_render_to_separate_surface = true; | |
| 575 PropertyTrees* property_trees = | 562 PropertyTrees* property_trees = |
| 576 inputs->root_layer->layer_tree_host()->property_trees(); | 563 inputs->root_layer->layer_tree_host()->property_trees(); |
| 577 Layer* overscroll_elasticity_layer = nullptr; | 564 Layer* overscroll_elasticity_layer = nullptr; |
| 578 gfx::Vector2dF elastic_overscroll; | 565 gfx::Vector2dF elastic_overscroll; |
| 579 PropertyTreeBuilder::BuildPropertyTrees( | 566 PropertyTreeBuilder::BuildPropertyTrees( |
| 580 inputs->root_layer, inputs->page_scale_layer, | 567 inputs->root_layer, inputs->page_scale_layer, |
| 581 inputs->inner_viewport_scroll_layer, inputs->outer_viewport_scroll_layer, | 568 inputs->inner_viewport_scroll_layer, inputs->outer_viewport_scroll_layer, |
| 582 overscroll_elasticity_layer, elastic_overscroll, | 569 overscroll_elasticity_layer, elastic_overscroll, |
| 583 inputs->page_scale_factor, inputs->device_scale_factor, | 570 inputs->page_scale_factor, inputs->device_scale_factor, |
| 584 gfx::Rect(inputs->device_viewport_size), inputs->device_transform, | 571 gfx::Rect(inputs->device_viewport_size), inputs->device_transform, |
| 585 property_trees); | 572 property_trees); |
| 586 draw_property_utils::UpdatePropertyTrees(property_trees, | 573 draw_property_utils::UpdatePropertyTrees(property_trees); |
| 587 can_render_to_separate_surface); | |
| 588 draw_property_utils::FindLayersThatNeedUpdates( | 574 draw_property_utils::FindLayersThatNeedUpdates( |
| 589 inputs->root_layer->layer_tree_host(), property_trees, | 575 inputs->root_layer->layer_tree_host(), property_trees, |
| 590 &update_layer_list); | 576 &update_layer_list); |
| 591 } | 577 } |
| 592 | 578 |
| 593 void LayerTreeHostCommon::CalculateDrawProperties( | 579 void LayerTreeHostCommon::CalculateDrawProperties( |
| 594 CalcDrawPropsImplInputs* inputs) { | 580 CalcDrawPropsImplInputs* inputs) { |
| 595 CalculateDrawPropertiesInternal(inputs, DONT_BUILD_PROPERTY_TREES); | 581 CalculateDrawPropertiesInternal(inputs, DONT_BUILD_PROPERTY_TREES); |
| 596 | 582 |
| 597 if (CdpPerfTracingEnabled()) { | 583 if (CdpPerfTracingEnabled()) { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 648 | 634 |
| 649 PropertyTrees* GetPropertyTrees(Layer* layer) { | 635 PropertyTrees* GetPropertyTrees(Layer* layer) { |
| 650 return layer->layer_tree_host()->property_trees(); | 636 return layer->layer_tree_host()->property_trees(); |
| 651 } | 637 } |
| 652 | 638 |
| 653 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { | 639 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { |
| 654 return layer->layer_tree_impl()->property_trees(); | 640 return layer->layer_tree_impl()->property_trees(); |
| 655 } | 641 } |
| 656 | 642 |
| 657 } // namespace cc | 643 } // namespace cc |
| OLD | NEW |