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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 1469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1480 // TODO(sunxd): Make this function private once scroll offset access is fully | 1480 // TODO(sunxd): Make this function private once scroll offset access is fully |
1481 // directed to scroll tree. | 1481 // directed to scroll tree. |
1482 SyncedScrollOffset* ScrollTree::synced_scroll_offset(int layer_id) { | 1482 SyncedScrollOffset* ScrollTree::synced_scroll_offset(int layer_id) { |
1483 if (layer_id_to_scroll_offset_map_.find(layer_id) == | 1483 if (layer_id_to_scroll_offset_map_.find(layer_id) == |
1484 layer_id_to_scroll_offset_map_.end()) { | 1484 layer_id_to_scroll_offset_map_.end()) { |
1485 layer_id_to_scroll_offset_map_[layer_id] = new SyncedScrollOffset; | 1485 layer_id_to_scroll_offset_map_[layer_id] = new SyncedScrollOffset; |
1486 } | 1486 } |
1487 return layer_id_to_scroll_offset_map_[layer_id].get(); | 1487 return layer_id_to_scroll_offset_map_[layer_id].get(); |
1488 } | 1488 } |
1489 | 1489 |
| 1490 const SyncedScrollOffset* ScrollTree::synced_scroll_offset(int layer_id) const { |
| 1491 if (layer_id_to_scroll_offset_map_.find(layer_id) == |
| 1492 layer_id_to_scroll_offset_map_.end()) { |
| 1493 return nullptr; |
| 1494 } |
| 1495 return layer_id_to_scroll_offset_map_.at(layer_id).get(); |
| 1496 } |
| 1497 |
1490 gfx::ScrollOffset ScrollTree::PullDeltaForMainThread( | 1498 gfx::ScrollOffset ScrollTree::PullDeltaForMainThread( |
1491 SyncedScrollOffset* scroll_offset) { | 1499 SyncedScrollOffset* scroll_offset) { |
1492 // TODO(miletus): Remove all this temporary flooring machinery when | 1500 // TODO(miletus): Remove all this temporary flooring machinery when |
1493 // Blink fully supports fractional scrolls. | 1501 // Blink fully supports fractional scrolls. |
1494 gfx::ScrollOffset current_offset = | 1502 gfx::ScrollOffset current_offset = |
1495 scroll_offset->Current(property_trees()->is_active); | 1503 scroll_offset->Current(property_trees()->is_active); |
1496 gfx::ScrollOffset current_delta = property_trees()->is_active | 1504 gfx::ScrollOffset current_delta = property_trees()->is_active |
1497 ? scroll_offset->Delta() | 1505 ? scroll_offset->Delta() |
1498 : scroll_offset->PendingDelta().get(); | 1506 : scroll_offset->PendingDelta().get(); |
1499 gfx::ScrollOffset floored_delta(floor(current_delta.x()), | 1507 gfx::ScrollOffset floored_delta(floor(current_delta.x()), |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1586 | 1594 |
1587 bool ScrollTree::SetScrollOffset(int layer_id, | 1595 bool ScrollTree::SetScrollOffset(int layer_id, |
1588 const gfx::ScrollOffset& scroll_offset) { | 1596 const gfx::ScrollOffset& scroll_offset) { |
1589 if (property_trees()->is_main_thread) | 1597 if (property_trees()->is_main_thread) |
1590 return synced_scroll_offset(layer_id)->PushFromMainThread(scroll_offset); | 1598 return synced_scroll_offset(layer_id)->PushFromMainThread(scroll_offset); |
1591 else if (property_trees()->is_active) | 1599 else if (property_trees()->is_active) |
1592 return synced_scroll_offset(layer_id)->SetCurrent(scroll_offset); | 1600 return synced_scroll_offset(layer_id)->SetCurrent(scroll_offset); |
1593 return false; | 1601 return false; |
1594 } | 1602 } |
1595 | 1603 |
| 1604 bool ScrollTree::UpdateScrollOffsetBaseForTesting( |
| 1605 int layer_id, |
| 1606 const gfx::ScrollOffset& offset) { |
| 1607 DCHECK(!property_trees()->is_main_thread); |
| 1608 bool changed = synced_scroll_offset(layer_id)->PushFromMainThread(offset); |
| 1609 if (property_trees()->is_active) |
| 1610 changed |= synced_scroll_offset(layer_id)->PushPendingToActive(); |
| 1611 return changed; |
| 1612 } |
| 1613 |
| 1614 const gfx::ScrollOffset ScrollTree::GetScrollOffsetBaseForTesting( |
| 1615 int layer_id) const { |
| 1616 DCHECK(!property_trees()->is_main_thread); |
| 1617 if (synced_scroll_offset(layer_id)) |
| 1618 return property_trees()->is_active |
| 1619 ? synced_scroll_offset(layer_id)->ActiveBase() |
| 1620 : synced_scroll_offset(layer_id)->PendingBase(); |
| 1621 else |
| 1622 return gfx::ScrollOffset(); |
| 1623 } |
| 1624 |
1596 PropertyTrees::PropertyTrees() | 1625 PropertyTrees::PropertyTrees() |
1597 : needs_rebuild(true), | 1626 : needs_rebuild(true), |
1598 non_root_surfaces_enabled(true), | 1627 non_root_surfaces_enabled(true), |
1599 changed(false), | 1628 changed(false), |
1600 full_tree_damaged(false), | 1629 full_tree_damaged(false), |
1601 sequence_number(0), | 1630 sequence_number(0), |
1602 is_main_thread(true), | 1631 is_main_thread(true), |
1603 is_active(false) { | 1632 is_active(false) { |
1604 transform_tree.SetPropertyTrees(this); | 1633 transform_tree.SetPropertyTrees(this); |
1605 effect_tree.SetPropertyTrees(this); | 1634 effect_tree.SetPropertyTrees(this); |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1737 break; | 1766 break; |
1738 case ALL_TREES: | 1767 case ALL_TREES: |
1739 transform_tree.ResetChangeTracking(); | 1768 transform_tree.ResetChangeTracking(); |
1740 effect_tree.ResetChangeTracking(); | 1769 effect_tree.ResetChangeTracking(); |
1741 } | 1770 } |
1742 changed = false; | 1771 changed = false; |
1743 full_tree_damaged = false; | 1772 full_tree_damaged = false; |
1744 } | 1773 } |
1745 | 1774 |
1746 } // namespace cc | 1775 } // namespace cc |
OLD | NEW |