| 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 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 483 | 476 |
| 484 bool LayerImpl::scrollable() const { | 477 bool LayerImpl::scrollable() const { |
| 485 return scroll_clip_layer_id_ != Layer::INVALID_ID; | 478 return scroll_clip_layer_id_ != Layer::INVALID_ID; |
| 486 } | 479 } |
| 487 | 480 |
| 488 bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const { | 481 bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const { |
| 489 return (orientation == HORIZONTAL) ? user_scrollable_horizontal_ | 482 return (orientation == HORIZONTAL) ? user_scrollable_horizontal_ |
| 490 : user_scrollable_vertical_; | 483 : user_scrollable_vertical_; |
| 491 } | 484 } |
| 492 | 485 |
| 493 void LayerImpl::ApplySentScrollDeltasFromAbortedCommit() { | |
| 494 DCHECK(layer_tree_impl()->IsActiveTree()); | |
| 495 scroll_offset_->AbortCommit(); | |
| 496 } | |
| 497 | |
| 498 skia::RefPtr<SkPicture> LayerImpl::GetPicture() { | 486 skia::RefPtr<SkPicture> LayerImpl::GetPicture() { |
| 499 return skia::RefPtr<SkPicture>(); | 487 return skia::RefPtr<SkPicture>(); |
| 500 } | 488 } |
| 501 | 489 |
| 502 scoped_ptr<LayerImpl> LayerImpl::CreateLayerImpl(LayerTreeImpl* tree_impl) { | 490 scoped_ptr<LayerImpl> LayerImpl::CreateLayerImpl(LayerTreeImpl* tree_impl) { |
| 503 return LayerImpl::Create(tree_impl, layer_id_, scroll_offset_); | 491 return LayerImpl::Create(tree_impl, layer_id_); |
| 504 } | 492 } |
| 505 | 493 |
| 506 void LayerImpl::set_main_thread_scrolling_reasons( | 494 void LayerImpl::set_main_thread_scrolling_reasons( |
| 507 uint32_t main_thread_scrolling_reasons) { | 495 uint32_t main_thread_scrolling_reasons) { |
| 508 if (main_thread_scrolling_reasons_ == main_thread_scrolling_reasons) | 496 if (main_thread_scrolling_reasons_ == main_thread_scrolling_reasons) |
| 509 return; | 497 return; |
| 510 | 498 |
| 511 if (main_thread_scrolling_reasons & | 499 if (main_thread_scrolling_reasons & |
| 512 MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects && | 500 MainThreadScrollingReason::kHasNonLayerViewportConstrainedObjects && |
| 513 layer_tree_impl()) { | 501 layer_tree_impl()) { |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 layer->NoteLayerPropertyChanged(); | 554 layer->NoteLayerPropertyChanged(); |
| 567 | 555 |
| 568 layer->SetScrollClipLayer(scroll_clip_layer_id_); | 556 layer->SetScrollClipLayer(scroll_clip_layer_id_); |
| 569 layer->SetElementId(element_id_); | 557 layer->SetElementId(element_id_); |
| 570 layer->SetMutableProperties(mutable_properties_); | 558 layer->SetMutableProperties(mutable_properties_); |
| 571 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); | 559 layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); |
| 572 layer->set_user_scrollable_vertical(user_scrollable_vertical_); | 560 layer->set_user_scrollable_vertical(user_scrollable_vertical_); |
| 573 | 561 |
| 574 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_); | 562 layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_); |
| 575 | 563 |
| 576 layer->PushScrollOffset(nullptr); | |
| 577 | |
| 578 layer->Set3dSortingContextId(sorting_context_id_); | 564 layer->Set3dSortingContextId(sorting_context_id_); |
| 579 layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_); | 565 layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_); |
| 580 | 566 |
| 581 layer->SetTransformTreeIndex(transform_tree_index_); | 567 layer->SetTransformTreeIndex(transform_tree_index_); |
| 582 layer->SetClipTreeIndex(clip_tree_index_); | 568 layer->SetClipTreeIndex(clip_tree_index_); |
| 583 layer->SetEffectTreeIndex(effect_tree_index_); | 569 layer->SetEffectTreeIndex(effect_tree_index_); |
| 584 layer->SetScrollTreeIndex(scroll_tree_index_); | 570 layer->SetScrollTreeIndex(scroll_tree_index_); |
| 585 layer->set_offset_to_transform_parent(offset_to_transform_parent_); | 571 layer->set_offset_to_transform_parent(offset_to_transform_parent_); |
| 586 | 572 |
| 587 LayerImpl* scroll_parent = nullptr; | 573 LayerImpl* scroll_parent = nullptr; |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1295 frame_timing_requests_ = requests; | 1281 frame_timing_requests_ = requests; |
| 1296 frame_timing_requests_dirty_ = true; | 1282 frame_timing_requests_dirty_ = true; |
| 1297 SetNeedsPushProperties(); | 1283 SetNeedsPushProperties(); |
| 1298 } | 1284 } |
| 1299 | 1285 |
| 1300 void LayerImpl::GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids) { | 1286 void LayerImpl::GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids) { |
| 1301 for (const auto& request : frame_timing_requests_) | 1287 for (const auto& request : frame_timing_requests_) |
| 1302 request_ids->push_back(request.id()); | 1288 request_ids->push_back(request.id()); |
| 1303 } | 1289 } |
| 1304 | 1290 |
| 1291 const SyncedScrollOffset* LayerImpl::synced_scroll_offset() const { |
| 1292 return layer_tree_impl()->property_trees()->scroll_tree.synced_scroll_offset( |
| 1293 id()); |
| 1294 } |
| 1295 |
| 1296 SyncedScrollOffset* LayerImpl::synced_scroll_offset() { |
| 1297 return layer_tree_impl()->property_trees()->scroll_tree.synced_scroll_offset( |
| 1298 id()); |
| 1299 } |
| 1300 |
| 1305 void LayerImpl::SetTransform(const gfx::Transform& transform) { | 1301 void LayerImpl::SetTransform(const gfx::Transform& transform) { |
| 1306 if (transform_ == transform) | 1302 if (transform_ == transform) |
| 1307 return; | 1303 return; |
| 1308 | 1304 |
| 1309 transform_ = transform; | 1305 transform_ = transform; |
| 1310 transform_is_invertible_ = transform_.IsInvertible(); | 1306 transform_is_invertible_ = transform_.IsInvertible(); |
| 1311 } | 1307 } |
| 1312 | 1308 |
| 1313 void LayerImpl::SetTransformAndInvertibility(const gfx::Transform& transform, | 1309 void LayerImpl::SetTransformAndInvertibility(const gfx::Transform& transform, |
| 1314 bool transform_is_invertible) { | 1310 bool transform_is_invertible) { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1439 update_rect_ = update_rect; | 1435 update_rect_ = update_rect; |
| 1440 SetNeedsPushProperties(); | 1436 SetNeedsPushProperties(); |
| 1441 } | 1437 } |
| 1442 | 1438 |
| 1443 void LayerImpl::AddDamageRect(const gfx::Rect& damage_rect) { | 1439 void LayerImpl::AddDamageRect(const gfx::Rect& damage_rect) { |
| 1444 damage_rect_.Union(damage_rect); | 1440 damage_rect_.Union(damage_rect); |
| 1445 } | 1441 } |
| 1446 | 1442 |
| 1447 void LayerImpl::SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset) { | 1443 void LayerImpl::SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset) { |
| 1448 DCHECK(IsActive()); | 1444 DCHECK(IsActive()); |
| 1449 if (scroll_offset_->SetCurrent(scroll_offset)) | 1445 if (synced_scroll_offset()->SetCurrent(scroll_offset)) |
| 1450 DidUpdateScrollOffset(); | 1446 DidUpdateScrollOffset(); |
| 1451 } | 1447 } |
| 1452 | 1448 |
| 1453 void LayerImpl::PushScrollOffsetFromMainThread( | |
| 1454 const gfx::ScrollOffset& scroll_offset) { | |
| 1455 PushScrollOffset(&scroll_offset); | |
| 1456 } | |
| 1457 | |
| 1458 void LayerImpl::PushScrollOffsetFromMainThreadAndClobberActiveValue( | |
| 1459 const gfx::ScrollOffset& scroll_offset) { | |
| 1460 scroll_offset_->set_clobber_active_value(); | |
| 1461 PushScrollOffset(&scroll_offset); | |
| 1462 } | |
| 1463 | |
| 1464 gfx::ScrollOffset LayerImpl::PullDeltaForMainThread() { | |
| 1465 // TODO(miletus): Remove all this temporary flooring machinery when | |
| 1466 // Blink fully supports fractional scrolls. | |
| 1467 gfx::ScrollOffset current_offset = CurrentScrollOffset(); | |
| 1468 gfx::ScrollOffset current_delta = IsActive() | |
| 1469 ? scroll_offset_->Delta() | |
| 1470 : scroll_offset_->PendingDelta().get(); | |
| 1471 gfx::ScrollOffset floored_delta(floor(current_delta.x()), | |
| 1472 floor(current_delta.y())); | |
| 1473 gfx::ScrollOffset diff_delta = floored_delta - current_delta; | |
| 1474 gfx::ScrollOffset tmp_offset = current_offset + diff_delta; | |
| 1475 scroll_offset_->SetCurrent(tmp_offset); | |
| 1476 gfx::ScrollOffset delta = scroll_offset_->PullDeltaForMainThread(); | |
| 1477 scroll_offset_->SetCurrent(current_offset); | |
| 1478 return delta; | |
| 1479 } | |
| 1480 | |
| 1481 gfx::ScrollOffset LayerImpl::CurrentScrollOffset() const { | 1449 gfx::ScrollOffset LayerImpl::CurrentScrollOffset() const { |
| 1482 return scroll_offset_->Current(IsActive()); | 1450 return synced_scroll_offset()->Current(IsActive()); |
| 1483 } | 1451 } |
| 1484 | 1452 |
| 1485 gfx::Vector2dF LayerImpl::ScrollDelta() const { | 1453 gfx::Vector2dF LayerImpl::ScrollDelta() const { |
| 1486 if (IsActive()) | 1454 if (IsActive()) |
| 1487 return gfx::Vector2dF(scroll_offset_->Delta().x(), | 1455 return gfx::Vector2dF(synced_scroll_offset()->Delta().x(), |
| 1488 scroll_offset_->Delta().y()); | 1456 synced_scroll_offset()->Delta().y()); |
| 1489 else | 1457 else |
| 1490 return gfx::Vector2dF(scroll_offset_->PendingDelta().get().x(), | 1458 return gfx::Vector2dF(synced_scroll_offset()->PendingDelta().get().x(), |
| 1491 scroll_offset_->PendingDelta().get().y()); | 1459 synced_scroll_offset()->PendingDelta().get().y()); |
| 1492 } | 1460 } |
| 1493 | 1461 |
| 1494 void LayerImpl::SetScrollDelta(const gfx::Vector2dF& delta) { | 1462 void LayerImpl::SetScrollDelta(const gfx::Vector2dF& delta) { |
| 1495 DCHECK(IsActive()); | 1463 DCHECK(IsActive()); |
| 1496 DCHECK(scrollable() || delta.IsZero()); | 1464 DCHECK(scrollable() || delta.IsZero()); |
| 1497 SetCurrentScrollOffset(scroll_offset_->ActiveBase() + | 1465 SetCurrentScrollOffset(synced_scroll_offset()->ActiveBase() + |
| 1498 gfx::ScrollOffset(delta)); | 1466 gfx::ScrollOffset(delta)); |
| 1499 } | 1467 } |
| 1500 | 1468 |
| 1501 gfx::ScrollOffset LayerImpl::BaseScrollOffset() const { | 1469 gfx::ScrollOffset LayerImpl::BaseScrollOffset() const { |
| 1502 if (IsActive()) | 1470 if (IsActive()) |
| 1503 return scroll_offset_->ActiveBase(); | 1471 return synced_scroll_offset()->ActiveBase(); |
| 1504 else | 1472 else |
| 1505 return scroll_offset_->PendingBase(); | 1473 return synced_scroll_offset()->PendingBase(); |
| 1506 } | 1474 } |
| 1507 | 1475 |
| 1508 void LayerImpl::PushScrollOffset(const gfx::ScrollOffset* scroll_offset) { | 1476 void LayerImpl::PushScrollOffsetFromMainThread( |
| 1509 DCHECK(scroll_offset || IsActive()); | 1477 const gfx::ScrollOffset& scroll_offset) { |
| 1510 bool changed = false; | 1478 bool changed = false; |
| 1511 if (scroll_offset) { | 1479 DCHECK(!IsActive() || !layer_tree_impl_->FindPendingTreeLayerById(id())); |
| 1512 DCHECK(!IsActive() || !layer_tree_impl_->FindPendingTreeLayerById(id())); | 1480 changed |= synced_scroll_offset()->PushFromMainThread(scroll_offset); |
| 1513 changed |= scroll_offset_->PushFromMainThread(*scroll_offset); | 1481 |
| 1514 } | |
| 1515 if (IsActive()) { | 1482 if (IsActive()) { |
| 1516 changed |= scroll_offset_->PushPendingToActive(); | 1483 changed |= synced_scroll_offset()->PushPendingToActive(); |
| 1517 } | 1484 } |
| 1518 | 1485 |
| 1519 if (changed) | 1486 if (changed) |
| 1520 DidUpdateScrollOffset(); | 1487 DidUpdateScrollOffset(); |
| 1521 } | 1488 } |
| 1522 | 1489 |
| 1523 void LayerImpl::UpdatePropertyTreeScrollOffset() { | 1490 void LayerImpl::UpdatePropertyTreeScrollOffset() { |
| 1524 // TODO(enne): in the future, scrolling should update the scroll tree | 1491 // TODO(enne): in the future, scrolling should update the scroll tree |
| 1525 // directly instead of going through layers. | 1492 // directly instead of going through layers. |
| 1526 if (transform_tree_index_ != -1) { | 1493 if (transform_tree_index_ != -1) { |
| 1527 TransformTree& transform_tree = | 1494 TransformTree& transform_tree = |
| 1528 layer_tree_impl()->property_trees()->transform_tree; | 1495 layer_tree_impl()->property_trees()->transform_tree; |
| 1529 TransformNode* node = transform_tree.Node(transform_tree_index_); | 1496 TransformNode* node = transform_tree.Node(transform_tree_index_); |
| 1530 gfx::ScrollOffset current_offset = scroll_offset_->Current(IsActive()); | 1497 gfx::ScrollOffset current_offset = |
| 1498 synced_scroll_offset()->Current(IsActive()); |
| 1531 if (node->data.scroll_offset != current_offset) { | 1499 if (node->data.scroll_offset != current_offset) { |
| 1532 node->data.scroll_offset = current_offset; | 1500 node->data.scroll_offset = current_offset; |
| 1533 node->data.needs_local_transform_update = true; | 1501 node->data.needs_local_transform_update = true; |
| 1534 transform_tree.set_needs_update(true); | 1502 transform_tree.set_needs_update(true); |
| 1535 } | 1503 } |
| 1536 } | 1504 } |
| 1537 } | 1505 } |
| 1538 | 1506 |
| 1539 void LayerImpl::DidUpdateScrollOffset() { | 1507 void LayerImpl::DidUpdateScrollOffset() { |
| 1540 DCHECK(scroll_offset_); | |
| 1541 | |
| 1542 layer_tree_impl()->DidUpdateScrollState(id()); | 1508 layer_tree_impl()->DidUpdateScrollState(id()); |
| 1543 | 1509 |
| 1544 if (transform_tree_index_ != -1) { | 1510 if (transform_tree_index_ != -1) { |
| 1545 UpdatePropertyTreeScrollOffset(); | 1511 UpdatePropertyTreeScrollOffset(); |
| 1546 TransformTree& transform_tree = | 1512 TransformTree& transform_tree = |
| 1547 layer_tree_impl()->property_trees()->transform_tree; | 1513 layer_tree_impl()->property_trees()->transform_tree; |
| 1548 TransformNode* node = transform_tree.Node(transform_tree_index_); | 1514 TransformNode* node = transform_tree.Node(transform_tree_index_); |
| 1549 node->data.transform_changed = true; | 1515 node->data.transform_changed = true; |
| 1550 layer_tree_impl()->property_trees()->changed = true; | 1516 layer_tree_impl()->property_trees()->changed = true; |
| 1551 layer_tree_impl()->set_needs_update_draw_properties(); | 1517 layer_tree_impl()->set_needs_update_draw_properties(); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1646 | 1612 |
| 1647 state->SetInteger("draws_content", DrawsContent()); | 1613 state->SetInteger("draws_content", DrawsContent()); |
| 1648 state->SetInteger("gpu_memory_usage", | 1614 state->SetInteger("gpu_memory_usage", |
| 1649 base::saturated_cast<int>(GPUMemoryUsageInBytes())); | 1615 base::saturated_cast<int>(GPUMemoryUsageInBytes())); |
| 1650 | 1616 |
| 1651 if (mutable_properties_ != MutableProperty::kNone) { | 1617 if (mutable_properties_ != MutableProperty::kNone) { |
| 1652 state->SetInteger("element_id", base::saturated_cast<int>(element_id_)); | 1618 state->SetInteger("element_id", base::saturated_cast<int>(element_id_)); |
| 1653 state->SetInteger("mutable_properties", mutable_properties_); | 1619 state->SetInteger("mutable_properties", mutable_properties_); |
| 1654 } | 1620 } |
| 1655 | 1621 |
| 1656 MathUtil::AddToTracedValue( | 1622 MathUtil::AddToTracedValue("scroll_offset", |
| 1657 "scroll_offset", scroll_offset_ ? scroll_offset_->Current(IsActive()) | 1623 synced_scroll_offset() |
| 1658 : gfx::ScrollOffset(), | 1624 ? synced_scroll_offset()->Current(IsActive()) |
| 1659 state); | 1625 : gfx::ScrollOffset(), |
| 1626 state); |
| 1660 | 1627 |
| 1661 MathUtil::AddToTracedValue("transform_origin", transform_origin_, state); | 1628 MathUtil::AddToTracedValue("transform_origin", transform_origin_, state); |
| 1662 | 1629 |
| 1663 bool clipped; | 1630 bool clipped; |
| 1664 gfx::QuadF layer_quad = | 1631 gfx::QuadF layer_quad = |
| 1665 MathUtil::MapQuad(ScreenSpaceTransform(), | 1632 MathUtil::MapQuad(ScreenSpaceTransform(), |
| 1666 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped); | 1633 gfx::QuadF(gfx::RectF(gfx::Rect(bounds()))), &clipped); |
| 1667 MathUtil::AddToTracedValue("layer_quad", layer_quad, state); | 1634 MathUtil::AddToTracedValue("layer_quad", layer_quad, state); |
| 1668 if (!touch_event_handler_region_.IsEmpty()) { | 1635 if (!touch_event_handler_region_.IsEmpty()) { |
| 1669 state->BeginArray("touch_event_handler_region"); | 1636 state->BeginArray("touch_event_handler_region"); |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1846 .layer_transforms_should_scale_layer_contents) { | 1813 .layer_transforms_should_scale_layer_contents) { |
| 1847 return default_scale; | 1814 return default_scale; |
| 1848 } | 1815 } |
| 1849 | 1816 |
| 1850 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1817 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1851 DrawTransform(), default_scale); | 1818 DrawTransform(), default_scale); |
| 1852 return std::max(transform_scales.x(), transform_scales.y()); | 1819 return std::max(transform_scales.x(), transform_scales.y()); |
| 1853 } | 1820 } |
| 1854 | 1821 |
| 1855 } // namespace cc | 1822 } // namespace cc |
| OLD | NEW |