| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 #include "cc/trees/layer_tree_settings.h" | 36 #include "cc/trees/layer_tree_settings.h" |
| 37 #include "cc/trees/proxy.h" | 37 #include "cc/trees/proxy.h" |
| 38 #include "ui/gfx/geometry/box_f.h" | 38 #include "ui/gfx/geometry/box_f.h" |
| 39 #include "ui/gfx/geometry/point_conversions.h" | 39 #include "ui/gfx/geometry/point_conversions.h" |
| 40 #include "ui/gfx/geometry/quad_f.h" | 40 #include "ui/gfx/geometry/quad_f.h" |
| 41 #include "ui/gfx/geometry/rect_conversions.h" | 41 #include "ui/gfx/geometry/rect_conversions.h" |
| 42 #include "ui/gfx/geometry/size_conversions.h" | 42 #include "ui/gfx/geometry/size_conversions.h" |
| 43 #include "ui/gfx/geometry/vector2d_conversions.h" | 43 #include "ui/gfx/geometry/vector2d_conversions.h" |
| 44 | 44 |
| 45 namespace cc { | 45 namespace cc { |
| 46 LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id) | 46 LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id) |
| 47 : LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) { | |
| 48 } | |
| 49 | |
| 50 LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, | |
| 51 int id, | |
| 52 scoped_refptr<SyncedScrollOffset> scroll_offset) | |
| 53 : parent_(nullptr), | 47 : parent_(nullptr), |
| 54 scroll_parent_(nullptr), | 48 scroll_parent_(nullptr), |
| 55 clip_parent_(nullptr), | 49 clip_parent_(nullptr), |
| 56 mask_layer_id_(-1), | 50 mask_layer_id_(-1), |
| 57 replica_layer_id_(-1), | 51 replica_layer_id_(-1), |
| 58 layer_id_(id), | 52 layer_id_(id), |
| 59 layer_tree_impl_(tree_impl), | 53 layer_tree_impl_(tree_impl), |
| 60 scroll_offset_(scroll_offset), | |
| 61 scroll_clip_layer_id_(Layer::INVALID_ID), | 54 scroll_clip_layer_id_(Layer::INVALID_ID), |
| 62 main_thread_scrolling_reasons_( | 55 main_thread_scrolling_reasons_( |
| 63 MainThreadScrollingReason::kNotScrollingOnMain), | 56 MainThreadScrollingReason::kNotScrollingOnMain), |
| 64 user_scrollable_horizontal_(true), | 57 user_scrollable_horizontal_(true), |
| 65 user_scrollable_vertical_(true), | 58 user_scrollable_vertical_(true), |
| 66 double_sided_(true), | 59 double_sided_(true), |
| 67 should_flatten_transform_(true), | 60 should_flatten_transform_(true), |
| 68 should_flatten_transform_from_property_tree_(false), | 61 should_flatten_transform_from_property_tree_(false), |
| 69 layer_property_changed_(false), | 62 layer_property_changed_(false), |
| 70 masks_to_bounds_(false), | 63 masks_to_bounds_(false), |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 | 475 |
| 483 bool LayerImpl::scrollable() const { | 476 bool LayerImpl::scrollable() const { |
| 484 return scroll_clip_layer_id_ != Layer::INVALID_ID; | 477 return scroll_clip_layer_id_ != Layer::INVALID_ID; |
| 485 } | 478 } |
| 486 | 479 |
| 487 bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const { | 480 bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const { |
| 488 return (orientation == HORIZONTAL) ? user_scrollable_horizontal_ | 481 return (orientation == HORIZONTAL) ? user_scrollable_horizontal_ |
| 489 : user_scrollable_vertical_; | 482 : user_scrollable_vertical_; |
| 490 } | 483 } |
| 491 | 484 |
| 492 void LayerImpl::ApplySentScrollDeltasFromAbortedCommit() { | |
| 493 DCHECK(layer_tree_impl()->IsActiveTree()); | |
| 494 scroll_offset_->AbortCommit(); | |
| 495 } | |
| 496 | |
| 497 skia::RefPtr<SkPicture> LayerImpl::GetPicture() { | 485 skia::RefPtr<SkPicture> LayerImpl::GetPicture() { |
| 498 return skia::RefPtr<SkPicture>(); | 486 return skia::RefPtr<SkPicture>(); |
| 499 } | 487 } |
| 500 | 488 |
| 501 scoped_ptr<LayerImpl> LayerImpl::CreateLayerImpl(LayerTreeImpl* tree_impl) { | 489 scoped_ptr<LayerImpl> LayerImpl::CreateLayerImpl(LayerTreeImpl* tree_impl) { |
| 502 return LayerImpl::Create(tree_impl, layer_id_, scroll_offset_); | 490 return LayerImpl::Create(tree_impl, layer_id_); |
| 503 } | 491 } |
| 504 | 492 |
| 505 void LayerImpl::set_main_thread_scrolling_reasons( | 493 void LayerImpl::set_main_thread_scrolling_reasons( |
| 506 uint32_t main_thread_scrolling_reasons) { | 494 uint32_t main_thread_scrolling_reasons) { |
| 507 if (main_thread_scrolling_reasons_ == main_thread_scrolling_reasons) | 495 if (main_thread_scrolling_reasons_ == main_thread_scrolling_reasons) |
| 508 return; | 496 return; |
| 509 | 497 |
| 510 if (main_thread_scrolling_reasons & | 498 if (main_thread_scrolling_reasons & |
| 511 MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects && | 499 MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects && |
| 512 layer_tree_impl()) { | 500 layer_tree_impl()) { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 layer->NoteLayerPropertyChanged(); | 552 layer->NoteLayerPropertyChanged(); |
| 565 | 553 |
| 566 layer->SetScrollClipLayer(scroll_clip_layer_id_); | 554 layer->SetScrollClipLayer(scroll_clip_layer_id_); |
| 567 layer->SetElementId(element_id_); | 555 layer->SetElementId(element_id_); |
| 568 layer->SetMutableProperties(mutable_properties_); | 556 layer->SetMutableProperties(mutable_properties_); |
| 569 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); | 557 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); |
| 570 layer->set_user_scrollable_vertical(user_scrollable_vertical_); | 558 layer->set_user_scrollable_vertical(user_scrollable_vertical_); |
| 571 | 559 |
| 572 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_); | 560 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_); |
| 573 | 561 |
| 574 layer->PushScrollOffset(nullptr); | |
| 575 | |
| 576 layer->Set3dSortingContextId(sorting_context_id_); | 562 layer->Set3dSortingContextId(sorting_context_id_); |
| 577 layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_); | 563 layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_); |
| 578 | 564 |
| 579 layer->SetTransformTreeIndex(transform_tree_index_); | 565 layer->SetTransformTreeIndex(transform_tree_index_); |
| 580 layer->SetClipTreeIndex(clip_tree_index_); | 566 layer->SetClipTreeIndex(clip_tree_index_); |
| 581 layer->SetEffectTreeIndex(effect_tree_index_); | 567 layer->SetEffectTreeIndex(effect_tree_index_); |
| 582 layer->SetScrollTreeIndex(scroll_tree_index_); | 568 layer->SetScrollTreeIndex(scroll_tree_index_); |
| 583 layer->set_offset_to_transform_parent(offset_to_transform_parent_); | 569 layer->set_offset_to_transform_parent(offset_to_transform_parent_); |
| 584 | 570 |
| 585 LayerImpl* scroll_parent = nullptr; | 571 LayerImpl* scroll_parent = nullptr; |
| (...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1306 frame_timing_requests_ = requests; | 1292 frame_timing_requests_ = requests; |
| 1307 frame_timing_requests_dirty_ = true; | 1293 frame_timing_requests_dirty_ = true; |
| 1308 SetNeedsPushProperties(); | 1294 SetNeedsPushProperties(); |
| 1309 } | 1295 } |
| 1310 | 1296 |
| 1311 void LayerImpl::GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids) { | 1297 void LayerImpl::GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids) { |
| 1312 for (const auto& request : frame_timing_requests_) | 1298 for (const auto& request : frame_timing_requests_) |
| 1313 request_ids->push_back(request.id()); | 1299 request_ids->push_back(request.id()); |
| 1314 } | 1300 } |
| 1315 | 1301 |
| 1302 const SyncedScrollOffset* LayerImpl::synced_scroll_offset() const { |
| 1303 return layer_tree_impl()->property_trees()->scroll_tree.synced_scroll_offset( |
| 1304 id()); |
| 1305 } |
| 1306 |
| 1307 SyncedScrollOffset* LayerImpl::synced_scroll_offset() { |
| 1308 return layer_tree_impl()->property_trees()->scroll_tree.synced_scroll_offset( |
| 1309 id()); |
| 1310 } |
| 1311 |
| 1316 void LayerImpl::SetTransform(const gfx::Transform& transform) { | 1312 void LayerImpl::SetTransform(const gfx::Transform& transform) { |
| 1317 if (transform_ == transform) | 1313 if (transform_ == transform) |
| 1318 return; | 1314 return; |
| 1319 | 1315 |
| 1320 transform_ = transform; | 1316 transform_ = transform; |
| 1321 transform_is_invertible_ = transform_.IsInvertible(); | 1317 transform_is_invertible_ = transform_.IsInvertible(); |
| 1322 } | 1318 } |
| 1323 | 1319 |
| 1324 void LayerImpl::SetTransformAndInvertibility(const gfx::Transform& transform, | 1320 void LayerImpl::SetTransformAndInvertibility(const gfx::Transform& transform, |
| 1325 bool transform_is_invertible) { | 1321 bool transform_is_invertible) { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1450 update_rect_ = update_rect; | 1446 update_rect_ = update_rect; |
| 1451 SetNeedsPushProperties(); | 1447 SetNeedsPushProperties(); |
| 1452 } | 1448 } |
| 1453 | 1449 |
| 1454 void LayerImpl::AddDamageRect(const gfx::Rect& damage_rect) { | 1450 void LayerImpl::AddDamageRect(const gfx::Rect& damage_rect) { |
| 1455 damage_rect_.Union(damage_rect); | 1451 damage_rect_.Union(damage_rect); |
| 1456 } | 1452 } |
| 1457 | 1453 |
| 1458 void LayerImpl::SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset) { | 1454 void LayerImpl::SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset) { |
| 1459 DCHECK(IsActive()); | 1455 DCHECK(IsActive()); |
| 1460 if (scroll_offset_->SetCurrent(scroll_offset)) | 1456 if (synced_scroll_offset()->SetCurrent(scroll_offset)) |
| 1461 DidUpdateScrollOffset(); | 1457 DidUpdateScrollOffset(); |
| 1462 } | 1458 } |
| 1463 | 1459 |
| 1464 void LayerImpl::PushScrollOffsetFromMainThread( | |
| 1465 const gfx::ScrollOffset& scroll_offset) { | |
| 1466 PushScrollOffset(&scroll_offset); | |
| 1467 } | |
| 1468 | |
| 1469 void LayerImpl::PushScrollOffsetFromMainThreadAndClobberActiveValue( | |
| 1470 const gfx::ScrollOffset& scroll_offset) { | |
| 1471 scroll_offset_->set_clobber_active_value(); | |
| 1472 PushScrollOffset(&scroll_offset); | |
| 1473 } | |
| 1474 | |
| 1475 gfx::ScrollOffset LayerImpl::PullDeltaForMainThread() { | |
| 1476 // TODO(miletus): Remove all this temporary flooring machinery when | |
| 1477 // Blink fully supports fractional scrolls. | |
| 1478 gfx::ScrollOffset current_offset = CurrentScrollOffset(); | |
| 1479 gfx::ScrollOffset current_delta = IsActive() | |
| 1480 ? scroll_offset_->Delta() | |
| 1481 : scroll_offset_->PendingDelta().get(); | |
| 1482 gfx::ScrollOffset floored_delta(floor(current_delta.x()), | |
| 1483 floor(current_delta.y())); | |
| 1484 gfx::ScrollOffset diff_delta = floored_delta - current_delta; | |
| 1485 gfx::ScrollOffset tmp_offset = current_offset + diff_delta; | |
| 1486 scroll_offset_->SetCurrent(tmp_offset); | |
| 1487 gfx::ScrollOffset delta = scroll_offset_->PullDeltaForMainThread(); | |
| 1488 scroll_offset_->SetCurrent(current_offset); | |
| 1489 return delta; | |
| 1490 } | |
| 1491 | |
| 1492 gfx::ScrollOffset LayerImpl::CurrentScrollOffset() const { | 1460 gfx::ScrollOffset LayerImpl::CurrentScrollOffset() const { |
| 1493 return scroll_offset_->Current(IsActive()); | 1461 return synced_scroll_offset()->Current(IsActive()); |
| 1494 } | 1462 } |
| 1495 | 1463 |
| 1496 gfx::Vector2dF LayerImpl::ScrollDelta() const { | 1464 gfx::Vector2dF LayerImpl::ScrollDelta() const { |
| 1497 if (IsActive()) | 1465 if (IsActive()) |
| 1498 return gfx::Vector2dF(scroll_offset_->Delta().x(), | 1466 return gfx::Vector2dF(synced_scroll_offset()->Delta().x(), |
| 1499 scroll_offset_->Delta().y()); | 1467 synced_scroll_offset()->Delta().y()); |
| 1500 else | 1468 else |
| 1501 return gfx::Vector2dF(scroll_offset_->PendingDelta().get().x(), | 1469 return gfx::Vector2dF(synced_scroll_offset()->PendingDelta().get().x(), |
| 1502 scroll_offset_->PendingDelta().get().y()); | 1470 synced_scroll_offset()->PendingDelta().get().y()); |
| 1503 } | 1471 } |
| 1504 | 1472 |
| 1505 void LayerImpl::SetScrollDelta(const gfx::Vector2dF& delta) { | 1473 void LayerImpl::SetScrollDelta(const gfx::Vector2dF& delta) { |
| 1506 DCHECK(IsActive()); | 1474 DCHECK(IsActive()); |
| 1507 DCHECK(scrollable() || delta.IsZero()); | 1475 DCHECK(scrollable() || delta.IsZero()); |
| 1508 SetCurrentScrollOffset(scroll_offset_->ActiveBase() + | 1476 SetCurrentScrollOffset(synced_scroll_offset()->ActiveBase() + |
| 1509 gfx::ScrollOffset(delta)); | 1477 gfx::ScrollOffset(delta)); |
| 1510 } | 1478 } |
| 1511 | 1479 |
| 1512 gfx::ScrollOffset LayerImpl::BaseScrollOffset() const { | 1480 gfx::ScrollOffset LayerImpl::BaseScrollOffset() const { |
| 1513 if (IsActive()) | 1481 if (IsActive()) |
| 1514 return scroll_offset_->ActiveBase(); | 1482 return synced_scroll_offset()->ActiveBase(); |
| 1515 else | 1483 else |
| 1516 return scroll_offset_->PendingBase(); | 1484 return synced_scroll_offset()->PendingBase(); |
| 1517 } | 1485 } |
| 1518 | 1486 |
| 1519 void LayerImpl::PushScrollOffset(const gfx::ScrollOffset* scroll_offset) { | 1487 void LayerImpl::PushScrollOffsetFromMainThread( |
| 1520 DCHECK(scroll_offset || IsActive()); | 1488 const gfx::ScrollOffset& scroll_offset) { |
| 1521 bool changed = false; | 1489 bool changed = false; |
| 1522 if (scroll_offset) { | 1490 DCHECK(!IsActive() || !layer_tree_impl_->FindPendingTreeLayerById(id())); |
| 1523 DCHECK(!IsActive() || !layer_tree_impl_->FindPendingTreeLayerById(id())); | 1491 changed |= synced_scroll_offset()->PushFromMainThread(scroll_offset); |
| 1524 changed |= scroll_offset_->PushFromMainThread(*scroll_offset); | 1492 |
| 1525 } | |
| 1526 if (IsActive()) { | 1493 if (IsActive()) { |
| 1527 changed |= scroll_offset_->PushPendingToActive(); | 1494 changed |= synced_scroll_offset()->PushPendingToActive(); |
| 1528 } | 1495 } |
| 1529 | 1496 |
| 1530 if (changed) | 1497 if (changed) |
| 1531 DidUpdateScrollOffset(); | 1498 DidUpdateScrollOffset(); |
| 1532 } | 1499 } |
| 1533 | 1500 |
| 1534 void LayerImpl::UpdatePropertyTreeScrollOffset() { | 1501 void LayerImpl::UpdatePropertyTreeScrollOffset() { |
| 1535 // TODO(enne): in the future, scrolling should update the scroll tree | 1502 // TODO(enne): in the future, scrolling should update the scroll tree |
| 1536 // directly instead of going through layers. | 1503 // directly instead of going through layers. |
| 1537 if (transform_tree_index_ != -1) { | 1504 if (transform_tree_index_ != -1) { |
| 1538 TransformTree& transform_tree = | 1505 TransformTree& transform_tree = |
| 1539 layer_tree_impl()->property_trees()->transform_tree; | 1506 layer_tree_impl()->property_trees()->transform_tree; |
| 1540 TransformNode* node = transform_tree.Node(transform_tree_index_); | 1507 TransformNode* node = transform_tree.Node(transform_tree_index_); |
| 1541 gfx::ScrollOffset current_offset = scroll_offset_->Current(IsActive()); | 1508 gfx::ScrollOffset current_offset = |
| 1509 synced_scroll_offset()->Current(IsActive()); |
| 1542 if (node->data.scroll_offset != current_offset) { | 1510 if (node->data.scroll_offset != current_offset) { |
| 1543 node->data.scroll_offset = current_offset; | 1511 node->data.scroll_offset = current_offset; |
| 1544 node->data.needs_local_transform_update = true; | 1512 node->data.needs_local_transform_update = true; |
| 1545 transform_tree.set_needs_update(true); | 1513 transform_tree.set_needs_update(true); |
| 1546 } | 1514 } |
| 1547 } | 1515 } |
| 1548 } | 1516 } |
| 1549 | 1517 |
| 1550 void LayerImpl::DidUpdateScrollOffset() { | 1518 void LayerImpl::DidUpdateScrollOffset() { |
| 1551 DCHECK(scroll_offset_); | |
| 1552 | |
| 1553 layer_tree_impl()->DidUpdateScrollState(id()); | 1519 layer_tree_impl()->DidUpdateScrollState(id()); |
| 1554 NoteLayerPropertyChangedForSubtree(); | 1520 NoteLayerPropertyChangedForSubtree(); |
| 1555 | |
| 1556 UpdatePropertyTreeScrollOffset(); | 1521 UpdatePropertyTreeScrollOffset(); |
| 1557 | 1522 |
| 1558 // Inform the pending twin that a property changed. | 1523 // Inform the pending twin that a property changed. |
| 1559 if (layer_tree_impl()->IsActiveTree()) { | 1524 if (layer_tree_impl()->IsActiveTree()) { |
| 1560 LayerImpl* pending_twin = layer_tree_impl()->FindPendingTreeLayerById(id()); | 1525 LayerImpl* pending_twin = layer_tree_impl()->FindPendingTreeLayerById(id()); |
| 1561 if (pending_twin) | 1526 if (pending_twin) |
| 1562 pending_twin->DidUpdateScrollOffset(); | 1527 pending_twin->DidUpdateScrollOffset(); |
| 1563 } | 1528 } |
| 1564 } | 1529 } |
| 1565 | 1530 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1649 | 1614 |
| 1650 state->SetInteger("draws_content", DrawsContent()); | 1615 state->SetInteger("draws_content", DrawsContent()); |
| 1651 state->SetInteger("gpu_memory_usage", | 1616 state->SetInteger("gpu_memory_usage", |
| 1652 base::saturated_cast<int>(GPUMemoryUsageInBytes())); | 1617 base::saturated_cast<int>(GPUMemoryUsageInBytes())); |
| 1653 | 1618 |
| 1654 if (mutable_properties_ != MutableProperty::kNone) { | 1619 if (mutable_properties_ != MutableProperty::kNone) { |
| 1655 state->SetInteger("element_id", base::saturated_cast<int>(element_id_)); | 1620 state->SetInteger("element_id", base::saturated_cast<int>(element_id_)); |
| 1656 state->SetInteger("mutable_properties", mutable_properties_); | 1621 state->SetInteger("mutable_properties", mutable_properties_); |
| 1657 } | 1622 } |
| 1658 | 1623 |
| 1659 MathUtil::AddToTracedValue( | 1624 MathUtil::AddToTracedValue("scroll_offset", |
| 1660 "scroll_offset", scroll_offset_ ? scroll_offset_->Current(IsActive()) | 1625 synced_scroll_offset() |
| 1661 : gfx::ScrollOffset(), | 1626 ? synced_scroll_offset()->Current(IsActive()) |
| 1662 state); | 1627 : gfx::ScrollOffset(), |
| 1628 state); |
| 1663 | 1629 |
| 1664 MathUtil::AddToTracedValue("transform_origin", transform_origin_, state); | 1630 MathUtil::AddToTracedValue("transform_origin", transform_origin_, state); |
| 1665 | 1631 |
| 1666 bool clipped; | 1632 bool clipped; |
| 1667 gfx::QuadF layer_quad = | 1633 gfx::QuadF layer_quad = |
| 1668 MathUtil::MapQuad(ScreenSpaceTransform(), | 1634 MathUtil::MapQuad(ScreenSpaceTransform(), |
| 1669 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped); | 1635 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped); |
| 1670 MathUtil::AddToTracedValue("layer_quad", layer_quad, state); | 1636 MathUtil::AddToTracedValue("layer_quad", layer_quad, state); |
| 1671 if (!touch_event_handler_region_.IsEmpty()) { | 1637 if (!touch_event_handler_region_.IsEmpty()) { |
| 1672 state->BeginArray("touch_event_handler_region"); | 1638 state->BeginArray("touch_event_handler_region"); |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1849 .layer_transforms_should_scale_layer_contents) { | 1815 .layer_transforms_should_scale_layer_contents) { |
| 1850 return default_scale; | 1816 return default_scale; |
| 1851 } | 1817 } |
| 1852 | 1818 |
| 1853 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1819 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1854 DrawTransform(), default_scale); | 1820 DrawTransform(), default_scale); |
| 1855 return std::max(transform_scales.x(), transform_scales.y()); | 1821 return std::max(transform_scales.x(), transform_scales.y()); |
| 1856 } | 1822 } |
| 1857 | 1823 |
| 1858 } // namespace cc | 1824 } // namespace cc |
| OLD | NEW |