| OLD | NEW |
| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 data_for_children->clip_tree_parent = | 449 data_for_children->clip_tree_parent = |
| 450 data_for_children->property_trees->clip_tree.Insert(node, parent_id); | 450 data_for_children->property_trees->clip_tree.Insert(node, parent_id); |
| 451 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = | 451 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = |
| 452 data_for_children->clip_tree_parent; | 452 data_for_children->clip_tree_parent; |
| 453 } | 453 } |
| 454 | 454 |
| 455 layer->SetClipTreeIndex(data_for_children->clip_tree_parent); | 455 layer->SetClipTreeIndex(data_for_children->clip_tree_parent); |
| 456 } | 456 } |
| 457 | 457 |
| 458 template <typename LayerType> | 458 template <typename LayerType> |
| 459 void AddClipNodeOnlyIfLayerClipsSubtree( |
| 460 const DataForRecursion<LayerType>& data_from_ancestor, |
| 461 LayerType* layer, |
| 462 bool created_render_surface, |
| 463 bool created_transform_node, |
| 464 DataForRecursion<LayerType>* data_for_children) { |
| 465 const bool inherits_clip = !ClipParent(layer); |
| 466 const int parent_id = inherits_clip ? data_from_ancestor.clip_tree_parent |
| 467 : ClipParent(layer)->clip_tree_index(); |
| 468 ClipNode* parent = |
| 469 data_from_ancestor.property_trees->clip_tree.Node(parent_id); |
| 470 |
| 471 bool apply_ancestor_clip = false; |
| 472 if (inherits_clip) { |
| 473 apply_ancestor_clip = data_from_ancestor.apply_ancestor_clip; |
| 474 } else { |
| 475 const EffectNode* parent_effect_node = |
| 476 data_from_ancestor.property_trees->effect_tree.Node( |
| 477 ClipParent(layer)->effect_tree_index()); |
| 478 if (parent_effect_node->clip_id == parent->id) { |
| 479 if (parent_effect_node->surface_is_clipped) { |
| 480 // In this case, there is no clipping layer between the clip parent and |
| 481 // its target and the target has applied the clip. |
| 482 apply_ancestor_clip = false; |
| 483 } else { |
| 484 // In this case, there is no clipping layer between the clip parent and |
| 485 // its target and the target has not applied the clip. There are two |
| 486 // cases when a target doesn't apply clip. First, there is no ancestor |
| 487 // clip to apply, in this case apply_ancestor_clip should be false. |
| 488 // Second, there is a clip to apply but there are unclipped descendants, |
| 489 // so the target cannot apply the clip. In this case, |
| 490 // apply_ancestor_clip should be true. |
| 491 apply_ancestor_clip = parent_effect_node->has_unclipped_descendants; |
| 492 } |
| 493 } else { |
| 494 // In this case, there is a clipping layer between the clip parent and |
| 495 // its target. |
| 496 apply_ancestor_clip = true; |
| 497 } |
| 498 } |
| 499 if (created_render_surface) |
| 500 SetSurfaceIsClipped(data_for_children, apply_ancestor_clip, layer); |
| 501 |
| 502 bool layer_clips_subtree = LayerClipsSubtree(layer); |
| 503 if (layer_clips_subtree) { |
| 504 data_for_children->apply_ancestor_clip = true; |
| 505 } |
| 506 |
| 507 if (!layer_clips_subtree) { |
| 508 data_for_children->clip_tree_parent = parent_id; |
| 509 } else { |
| 510 LayerType* transform_parent = data_for_children->transform_tree_parent; |
| 511 if (PositionConstraint(layer).is_fixed_position() && |
| 512 !created_transform_node) { |
| 513 transform_parent = data_for_children->transform_fixed_parent; |
| 514 } |
| 515 ClipNode node; |
| 516 node.clip = gfx::RectF(gfx::PointF() + layer->offset_to_transform_parent(), |
| 517 gfx::SizeF(layer->bounds())); |
| 518 node.transform_id = transform_parent->transform_tree_index(); |
| 519 node.owner_id = layer->id(); |
| 520 if (layer_clips_subtree) |
| 521 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; |
| 522 else |
| 523 node.clip_type = ClipNode::ClipType::NONE; |
| 524 data_for_children->clip_tree_parent = |
| 525 data_for_children->property_trees->clip_tree.Insert(node, parent_id); |
| 526 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = |
| 527 data_for_children->clip_tree_parent; |
| 528 } |
| 529 |
| 530 layer->SetNewClipTreeIndex(data_for_children->clip_tree_parent); |
| 531 } |
| 532 |
| 533 template <typename LayerType> |
| 459 static inline bool IsAtBoundaryOf3dRenderingContext(LayerType* layer) { | 534 static inline bool IsAtBoundaryOf3dRenderingContext(LayerType* layer) { |
| 460 return Parent(layer) | 535 return Parent(layer) |
| 461 ? Parent(layer)->sorting_context_id() != | 536 ? Parent(layer)->sorting_context_id() != |
| 462 layer->sorting_context_id() | 537 layer->sorting_context_id() |
| 463 : layer->Is3dSorted(); | 538 : layer->Is3dSorted(); |
| 464 } | 539 } |
| 465 | 540 |
| 466 static inline gfx::Point3F TransformOrigin(Layer* layer) { | 541 static inline gfx::Point3F TransformOrigin(Layer* layer) { |
| 467 return layer->transform_origin(); | 542 return layer->transform_origin(); |
| 468 } | 543 } |
| (...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1232 child->SetSubtreePropertyChanged(); | 1307 child->SetSubtreePropertyChanged(); |
| 1233 } | 1308 } |
| 1234 | 1309 |
| 1235 static void SetLayerPropertyChangedForChild(LayerImpl* parent, | 1310 static void SetLayerPropertyChangedForChild(LayerImpl* parent, |
| 1236 LayerImpl* child) {} | 1311 LayerImpl* child) {} |
| 1237 | 1312 |
| 1238 template <typename LayerType> | 1313 template <typename LayerType> |
| 1239 void BuildPropertyTreesInternal( | 1314 void BuildPropertyTreesInternal( |
| 1240 LayerType* layer, | 1315 LayerType* layer, |
| 1241 const DataForRecursion<LayerType>& data_from_parent, | 1316 const DataForRecursion<LayerType>& data_from_parent, |
| 1242 DataForRecursionFromChild<LayerType>* data_to_parent) { | 1317 DataForRecursionFromChild<LayerType>* data_to_parent, |
| 1318 bool build_new_clip_tree) { |
| 1243 layer->set_property_tree_sequence_number( | 1319 layer->set_property_tree_sequence_number( |
| 1244 data_from_parent.property_trees->sequence_number); | 1320 data_from_parent.property_trees->sequence_number); |
| 1245 | 1321 |
| 1246 DataForRecursion<LayerType> data_for_children(data_from_parent); | 1322 DataForRecursion<LayerType> data_for_children(data_from_parent); |
| 1247 | 1323 |
| 1248 bool created_render_surface = | 1324 bool created_render_surface = |
| 1249 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children); | 1325 AddEffectNodeIfNeeded(data_from_parent, layer, &data_for_children); |
| 1250 | 1326 |
| 1251 if (created_render_surface) { | 1327 if (created_render_surface) { |
| 1252 data_for_children.render_target = data_for_children.effect_tree_parent; | 1328 data_for_children.render_target = data_for_children.effect_tree_parent; |
| 1253 layer->set_draw_blend_mode(SkBlendMode::kSrcOver); | 1329 layer->set_draw_blend_mode(SkBlendMode::kSrcOver); |
| 1254 } else { | 1330 } else { |
| 1255 layer->set_draw_blend_mode(BlendMode(layer)); | 1331 layer->set_draw_blend_mode(BlendMode(layer)); |
| 1256 } | 1332 } |
| 1257 | 1333 |
| 1258 bool created_transform_node = AddTransformNodeIfNeeded( | 1334 bool created_transform_node = AddTransformNodeIfNeeded( |
| 1259 data_from_parent, layer, created_render_surface, &data_for_children); | 1335 data_from_parent, layer, created_render_surface, &data_for_children); |
| 1260 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface, | 1336 if (build_new_clip_tree) |
| 1261 created_transform_node, &data_for_children); | 1337 AddClipNodeOnlyIfLayerClipsSubtree(data_from_parent, layer, created_render_s
urface, |
| 1338 created_transform_node, &data_for_children); |
| 1339 else |
| 1340 AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface, |
| 1341 created_transform_node, &data_for_children); |
| 1262 | 1342 |
| 1263 AddScrollNodeIfNeeded(data_from_parent, layer, &data_for_children); | 1343 AddScrollNodeIfNeeded(data_from_parent, layer, &data_for_children); |
| 1264 | 1344 |
| 1265 SetBackfaceVisibilityTransform(layer, created_transform_node); | 1345 SetBackfaceVisibilityTransform(layer, created_transform_node); |
| 1266 SetSafeOpaqueBackgroundColor(data_from_parent, layer, &data_for_children); | 1346 SetSafeOpaqueBackgroundColor(data_from_parent, layer, &data_for_children); |
| 1267 | 1347 |
| 1268 for (size_t i = 0; i < Children(layer).size(); ++i) { | 1348 for (size_t i = 0; i < Children(layer).size(); ++i) { |
| 1269 LayerType* current_child = ChildAt(layer, i); | 1349 LayerType* current_child = ChildAt(layer, i); |
| 1270 SetLayerPropertyChangedForChild(layer, current_child); | 1350 SetLayerPropertyChangedForChild(layer, current_child); |
| 1271 if (!ScrollParent(current_child)) { | 1351 if (!ScrollParent(current_child)) { |
| 1272 DataForRecursionFromChild<LayerType> data_from_child; | 1352 DataForRecursionFromChild<LayerType> data_from_child; |
| 1273 BuildPropertyTreesInternal(current_child, data_for_children, | 1353 BuildPropertyTreesInternal(current_child, data_for_children, |
| 1274 &data_from_child); | 1354 &data_from_child, build_new_clip_tree); |
| 1275 data_to_parent->Merge(data_from_child); | 1355 data_to_parent->Merge(data_from_child); |
| 1276 } else { | 1356 } else { |
| 1277 // The child should be included in its scroll parent's list of scroll | 1357 // The child should be included in its scroll parent's list of scroll |
| 1278 // children. | 1358 // children. |
| 1279 DCHECK(ScrollChildren(ScrollParent(current_child))->count(current_child)); | 1359 DCHECK(ScrollChildren(ScrollParent(current_child))->count(current_child)); |
| 1280 } | 1360 } |
| 1281 } | 1361 } |
| 1282 | 1362 |
| 1283 if (ScrollChildren(layer)) { | 1363 if (ScrollChildren(layer)) { |
| 1284 for (LayerType* scroll_child : *ScrollChildren(layer)) { | 1364 for (LayerType* scroll_child : *ScrollChildren(layer)) { |
| 1285 DCHECK_EQ(ScrollParent(scroll_child), layer); | 1365 DCHECK_EQ(ScrollParent(scroll_child), layer); |
| 1286 DataForRecursionFromChild<LayerType> data_from_child; | 1366 DataForRecursionFromChild<LayerType> data_from_child; |
| 1287 DCHECK(Parent(scroll_child)); | 1367 DCHECK(Parent(scroll_child)); |
| 1288 data_for_children.effect_tree_parent = | 1368 data_for_children.effect_tree_parent = |
| 1289 Parent(scroll_child)->effect_tree_index(); | 1369 Parent(scroll_child)->effect_tree_index(); |
| 1290 data_for_children.render_target = | 1370 data_for_children.render_target = |
| 1291 Parent(scroll_child)->effect_tree_index(); | 1371 Parent(scroll_child)->effect_tree_index(); |
| 1292 BuildPropertyTreesInternal(scroll_child, data_for_children, | 1372 BuildPropertyTreesInternal(scroll_child, data_for_children, |
| 1293 &data_from_child); | 1373 &data_from_child, build_new_clip_tree); |
| 1294 data_to_parent->Merge(data_from_child); | 1374 data_to_parent->Merge(data_from_child); |
| 1295 } | 1375 } |
| 1296 } | 1376 } |
| 1297 | 1377 |
| 1298 if (MaskLayer(layer)) { | 1378 if (MaskLayer(layer)) { |
| 1299 MaskLayer(layer)->set_property_tree_sequence_number( | 1379 MaskLayer(layer)->set_property_tree_sequence_number( |
| 1300 data_from_parent.property_trees->sequence_number); | 1380 data_from_parent.property_trees->sequence_number); |
| 1301 MaskLayer(layer)->set_offset_to_transform_parent( | 1381 MaskLayer(layer)->set_offset_to_transform_parent( |
| 1302 layer->offset_to_transform_parent()); | 1382 layer->offset_to_transform_parent()); |
| 1303 MaskLayer(layer)->SetTransformTreeIndex(layer->transform_tree_index()); | 1383 MaskLayer(layer)->SetTransformTreeIndex(layer->transform_tree_index()); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1353 const LayerType* page_scale_layer, | 1433 const LayerType* page_scale_layer, |
| 1354 const LayerType* inner_viewport_scroll_layer, | 1434 const LayerType* inner_viewport_scroll_layer, |
| 1355 const LayerType* outer_viewport_scroll_layer, | 1435 const LayerType* outer_viewport_scroll_layer, |
| 1356 const LayerType* overscroll_elasticity_layer, | 1436 const LayerType* overscroll_elasticity_layer, |
| 1357 const gfx::Vector2dF& elastic_overscroll, | 1437 const gfx::Vector2dF& elastic_overscroll, |
| 1358 float page_scale_factor, | 1438 float page_scale_factor, |
| 1359 float device_scale_factor, | 1439 float device_scale_factor, |
| 1360 const gfx::Rect& viewport, | 1440 const gfx::Rect& viewport, |
| 1361 const gfx::Transform& device_transform, | 1441 const gfx::Transform& device_transform, |
| 1362 PropertyTrees* property_trees, | 1442 PropertyTrees* property_trees, |
| 1363 SkColor color) { | 1443 SkColor color, |
| 1444 bool build_new_clip_tree) { |
| 1364 if (!property_trees->needs_rebuild) { | 1445 if (!property_trees->needs_rebuild) { |
| 1365 draw_property_utils::UpdatePageScaleFactor( | 1446 draw_property_utils::UpdatePageScaleFactor( |
| 1366 property_trees, page_scale_layer, page_scale_factor, | 1447 property_trees, page_scale_layer, page_scale_factor, |
| 1367 device_scale_factor, device_transform); | 1448 device_scale_factor, device_transform); |
| 1368 draw_property_utils::UpdateElasticOverscroll( | 1449 draw_property_utils::UpdateElasticOverscroll( |
| 1369 property_trees, overscroll_elasticity_layer, elastic_overscroll); | 1450 property_trees, overscroll_elasticity_layer, elastic_overscroll); |
| 1370 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport)); | 1451 property_trees->clip_tree.SetViewportClip(gfx::RectF(viewport)); |
| 1371 float page_scale_factor_for_root = | 1452 float page_scale_factor_for_root = |
| 1372 page_scale_layer == root_layer ? page_scale_factor : 1.f; | 1453 page_scale_layer == root_layer ? page_scale_factor : 1.f; |
| 1373 property_trees->transform_tree.SetRootTransformsAndScales( | 1454 property_trees->transform_tree.SetRootTransformsAndScales( |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1416 root_clip.resets_clip = true; | 1497 root_clip.resets_clip = true; |
| 1417 root_clip.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; | 1498 root_clip.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; |
| 1418 root_clip.clip = gfx::RectF(viewport); | 1499 root_clip.clip = gfx::RectF(viewport); |
| 1419 root_clip.transform_id = kRootPropertyTreeNodeId; | 1500 root_clip.transform_id = kRootPropertyTreeNodeId; |
| 1420 root_clip.target_transform_id = kRootPropertyTreeNodeId; | 1501 root_clip.target_transform_id = kRootPropertyTreeNodeId; |
| 1421 data_for_recursion.clip_tree_parent = | 1502 data_for_recursion.clip_tree_parent = |
| 1422 data_for_recursion.property_trees->clip_tree.Insert( | 1503 data_for_recursion.property_trees->clip_tree.Insert( |
| 1423 root_clip, kRootPropertyTreeNodeId); | 1504 root_clip, kRootPropertyTreeNodeId); |
| 1424 | 1505 |
| 1425 DataForRecursionFromChild<LayerType> data_from_child; | 1506 DataForRecursionFromChild<LayerType> data_from_child; |
| 1426 BuildPropertyTreesInternal(root_layer, data_for_recursion, &data_from_child); | 1507 BuildPropertyTreesInternal(root_layer, data_for_recursion, &data_from_child, |
| 1508 build_new_clip_tree); |
| 1427 property_trees->needs_rebuild = false; | 1509 property_trees->needs_rebuild = false; |
| 1428 | 1510 |
| 1429 // The transform tree is kept up to date as it is built, but the | 1511 // The transform tree is kept up to date as it is built, but the |
| 1430 // combined_clips stored in the clip tree and the screen_space_opacity and | 1512 // combined_clips stored in the clip tree and the screen_space_opacity and |
| 1431 // is_drawn in the effect tree aren't computed during tree building. | 1513 // is_drawn in the effect tree aren't computed during tree building. |
| 1432 property_trees->transform_tree.set_needs_update(false); | 1514 property_trees->transform_tree.set_needs_update(false); |
| 1433 property_trees->clip_tree.set_needs_update(true); | 1515 property_trees->clip_tree.set_needs_update(true); |
| 1434 property_trees->effect_tree.set_needs_update(true); | 1516 property_trees->effect_tree.set_needs_update(true); |
| 1435 property_trees->scroll_tree.set_needs_update(false); | 1517 property_trees->scroll_tree.set_needs_update(false); |
| 1436 } | 1518 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1460 Layer* root_layer, | 1542 Layer* root_layer, |
| 1461 const Layer* page_scale_layer, | 1543 const Layer* page_scale_layer, |
| 1462 const Layer* inner_viewport_scroll_layer, | 1544 const Layer* inner_viewport_scroll_layer, |
| 1463 const Layer* outer_viewport_scroll_layer, | 1545 const Layer* outer_viewport_scroll_layer, |
| 1464 const Layer* overscroll_elasticity_layer, | 1546 const Layer* overscroll_elasticity_layer, |
| 1465 const gfx::Vector2dF& elastic_overscroll, | 1547 const gfx::Vector2dF& elastic_overscroll, |
| 1466 float page_scale_factor, | 1548 float page_scale_factor, |
| 1467 float device_scale_factor, | 1549 float device_scale_factor, |
| 1468 const gfx::Rect& viewport, | 1550 const gfx::Rect& viewport, |
| 1469 const gfx::Transform& device_transform, | 1551 const gfx::Transform& device_transform, |
| 1470 PropertyTrees* property_trees) { | 1552 PropertyTrees* property_trees, |
| 1553 bool build_new_clip_tree) { |
| 1471 property_trees->is_main_thread = true; | 1554 property_trees->is_main_thread = true; |
| 1472 property_trees->is_active = false; | 1555 property_trees->is_active = false; |
| 1473 SkColor color = root_layer->GetLayerTree()->background_color(); | 1556 SkColor color = root_layer->GetLayerTree()->background_color(); |
| 1474 if (SkColorGetA(color) != 255) | 1557 if (SkColorGetA(color) != 255) |
| 1475 color = SkColorSetA(color, 255); | 1558 color = SkColorSetA(color, 255); |
| 1476 BuildPropertyTreesTopLevelInternal( | 1559 BuildPropertyTreesTopLevelInternal( |
| 1477 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1560 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
| 1478 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1561 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
| 1479 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1562 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
| 1480 device_transform, property_trees, color); | 1563 device_transform, property_trees, color, build_new_clip_tree); |
| 1481 #if DCHECK_IS_ON() | 1564 #if DCHECK_IS_ON() |
| 1482 for (auto* layer : *root_layer->GetLayerTree()) | 1565 for (auto* layer : *root_layer->GetLayerTree()) |
| 1483 CheckScrollAndClipPointersForLayer(layer); | 1566 CheckScrollAndClipPointersForLayer(layer); |
| 1484 #endif | 1567 #endif |
| 1485 property_trees->ResetCachedData(); | 1568 property_trees->ResetCachedData(); |
| 1486 } | 1569 } |
| 1487 | 1570 |
| 1488 void PropertyTreeBuilder::BuildPropertyTrees( | 1571 void PropertyTreeBuilder::BuildPropertyTrees( |
| 1489 LayerImpl* root_layer, | 1572 LayerImpl* root_layer, |
| 1490 const LayerImpl* page_scale_layer, | 1573 const LayerImpl* page_scale_layer, |
| 1491 const LayerImpl* inner_viewport_scroll_layer, | 1574 const LayerImpl* inner_viewport_scroll_layer, |
| 1492 const LayerImpl* outer_viewport_scroll_layer, | 1575 const LayerImpl* outer_viewport_scroll_layer, |
| 1493 const LayerImpl* overscroll_elasticity_layer, | 1576 const LayerImpl* overscroll_elasticity_layer, |
| 1494 const gfx::Vector2dF& elastic_overscroll, | 1577 const gfx::Vector2dF& elastic_overscroll, |
| 1495 float page_scale_factor, | 1578 float page_scale_factor, |
| 1496 float device_scale_factor, | 1579 float device_scale_factor, |
| 1497 const gfx::Rect& viewport, | 1580 const gfx::Rect& viewport, |
| 1498 const gfx::Transform& device_transform, | 1581 const gfx::Transform& device_transform, |
| 1499 PropertyTrees* property_trees) { | 1582 PropertyTrees* property_trees, |
| 1583 bool build_new_clip_tree) { |
| 1500 property_trees->is_main_thread = false; | 1584 property_trees->is_main_thread = false; |
| 1501 property_trees->is_active = root_layer->IsActive(); | 1585 property_trees->is_active = root_layer->IsActive(); |
| 1502 SkColor color = root_layer->layer_tree_impl()->background_color(); | 1586 SkColor color = root_layer->layer_tree_impl()->background_color(); |
| 1503 if (SkColorGetA(color) != 255) | 1587 if (SkColorGetA(color) != 255) |
| 1504 color = SkColorSetA(color, 255); | 1588 color = SkColorSetA(color, 255); |
| 1505 BuildPropertyTreesTopLevelInternal( | 1589 BuildPropertyTreesTopLevelInternal( |
| 1506 root_layer, page_scale_layer, inner_viewport_scroll_layer, | 1590 root_layer, page_scale_layer, inner_viewport_scroll_layer, |
| 1507 outer_viewport_scroll_layer, overscroll_elasticity_layer, | 1591 outer_viewport_scroll_layer, overscroll_elasticity_layer, |
| 1508 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, | 1592 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, |
| 1509 device_transform, property_trees, color); | 1593 device_transform, property_trees, color, build_new_clip_tree); |
| 1510 property_trees->ResetCachedData(); | 1594 property_trees->ResetCachedData(); |
| 1511 } | 1595 } |
| 1512 | 1596 |
| 1513 } // namespace cc | 1597 } // namespace cc |
| OLD | NEW |