| 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 1304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1315 const gfx::ScrollOffset& scroll_offset, | 1315 const gfx::ScrollOffset& scroll_offset, |
| 1316 LayerTreeImpl* layer_tree_impl) { | 1316 LayerTreeImpl* layer_tree_impl) { |
| 1317 // Only active tree needs to be updated, pending tree will find out about | 1317 // Only active tree needs to be updated, pending tree will find out about |
| 1318 // these changes as a result of the shared SyncedProperty. | 1318 // these changes as a result of the shared SyncedProperty. |
| 1319 if (!property_trees()->is_active) | 1319 if (!property_trees()->is_active) |
| 1320 return; | 1320 return; |
| 1321 | 1321 |
| 1322 ScrollNode* scroll_node = Node(scroll_tree_index); | 1322 ScrollNode* scroll_node = Node(scroll_tree_index); |
| 1323 if (SetScrollOffset(layer_id, | 1323 if (SetScrollOffset(layer_id, |
| 1324 ClampScrollOffsetToLimits(scroll_offset, scroll_node))) | 1324 ClampScrollOffsetToLimits(scroll_offset, scroll_node))) |
| 1325 layer_tree_impl->DidUpdateScrollOffset(layer_id, transform_tree_index); | 1325 layer_tree_impl->DidUpdateScrollOffset(layer_id); |
| 1326 layer_tree_impl->DidAnimateScrollOffset(); | 1326 layer_tree_impl->DidAnimateScrollOffset(); |
| 1327 } | 1327 } |
| 1328 | 1328 |
| 1329 gfx::Size ScrollTree::scroll_clip_layer_bounds(int scroll_node_id) const { | 1329 gfx::Size ScrollTree::scroll_clip_layer_bounds(int scroll_node_id) const { |
| 1330 const ScrollNode* scroll_node = Node(scroll_node_id); | 1330 const ScrollNode* scroll_node = Node(scroll_node_id); |
| 1331 gfx::Size scroll_clip_layer_bounds = scroll_node->scroll_clip_layer_bounds; | 1331 gfx::Size scroll_clip_layer_bounds = scroll_node->scroll_clip_layer_bounds; |
| 1332 | 1332 |
| 1333 gfx::Vector2dF scroll_clip_layer_bounds_delta; | 1333 gfx::Vector2dF scroll_clip_layer_bounds_delta; |
| 1334 if (scroll_node->is_inner_viewport_scroll_layer) { | 1334 if (scroll_node->is_inner_viewport_scroll_layer) { |
| 1335 scroll_clip_layer_bounds_delta.Add( | 1335 scroll_clip_layer_bounds_delta.Add( |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1463 // instance of synced scroll offset; if we are pushing from pending to active, | 1463 // instance of synced scroll offset; if we are pushing from pending to active, |
| 1464 // we reuse the pending tree's value in the map. | 1464 // we reuse the pending tree's value in the map. |
| 1465 if (!property_trees()->is_active) { | 1465 if (!property_trees()->is_active) { |
| 1466 changed = synced_scroll_offset(key)->PushFromMainThread( | 1466 changed = synced_scroll_offset(key)->PushFromMainThread( |
| 1467 new_scroll_offset_map->at(key)->PendingBase()); | 1467 new_scroll_offset_map->at(key)->PendingBase()); |
| 1468 | 1468 |
| 1469 if (new_scroll_offset_map->at(key)->clobber_active_value()) { | 1469 if (new_scroll_offset_map->at(key)->clobber_active_value()) { |
| 1470 synced_scroll_offset(key)->set_clobber_active_value(); | 1470 synced_scroll_offset(key)->set_clobber_active_value(); |
| 1471 } | 1471 } |
| 1472 if (changed) { | 1472 if (changed) { |
| 1473 layer_tree_impl->DidUpdateScrollOffset(key, kInvalidNodeId); | 1473 layer_tree_impl->DidUpdateScrollOffset(key); |
| 1474 } | 1474 } |
| 1475 } else { | 1475 } else { |
| 1476 layer_id_to_scroll_offset_map_[key] = new_scroll_offset_map->at(key); | 1476 layer_id_to_scroll_offset_map_[key] = new_scroll_offset_map->at(key); |
| 1477 changed |= synced_scroll_offset(key)->PushPendingToActive(); | 1477 changed |= synced_scroll_offset(key)->PushPendingToActive(); |
| 1478 if (changed) { | 1478 if (changed) { |
| 1479 layer_tree_impl->DidUpdateScrollOffset(key, kInvalidNodeId); | 1479 layer_tree_impl->DidUpdateScrollOffset(key); |
| 1480 } | 1480 } |
| 1481 } | 1481 } |
| 1482 } | 1482 } |
| 1483 | 1483 |
| 1484 void ScrollTree::UpdateScrollOffsetMap( | 1484 void ScrollTree::UpdateScrollOffsetMap( |
| 1485 ScrollTree::ScrollOffsetMap* new_scroll_offset_map, | 1485 ScrollTree::ScrollOffsetMap* new_scroll_offset_map, |
| 1486 LayerTreeImpl* layer_tree_impl) { | 1486 LayerTreeImpl* layer_tree_impl) { |
| 1487 if (layer_tree_impl && !layer_tree_impl->LayerListIsEmpty()) { | 1487 if (layer_tree_impl && !layer_tree_impl->LayerListIsEmpty()) { |
| 1488 DCHECK(!property_trees()->is_main_thread); | 1488 DCHECK(!property_trees()->is_main_thread); |
| 1489 for (auto map_entry = layer_id_to_scroll_offset_map_.begin(); | 1489 for (auto map_entry = layer_id_to_scroll_offset_map_.begin(); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1597 gfx::ScrollOffset adjusted_scroll(scroll); | 1597 gfx::ScrollOffset adjusted_scroll(scroll); |
| 1598 if (!scroll_node->user_scrollable_horizontal) | 1598 if (!scroll_node->user_scrollable_horizontal) |
| 1599 adjusted_scroll.set_x(0); | 1599 adjusted_scroll.set_x(0); |
| 1600 if (!scroll_node->user_scrollable_vertical) | 1600 if (!scroll_node->user_scrollable_vertical) |
| 1601 adjusted_scroll.set_y(0); | 1601 adjusted_scroll.set_y(0); |
| 1602 DCHECK(scroll_node->scrollable); | 1602 DCHECK(scroll_node->scrollable); |
| 1603 gfx::ScrollOffset old_offset = current_scroll_offset(scroll_node->owner_id); | 1603 gfx::ScrollOffset old_offset = current_scroll_offset(scroll_node->owner_id); |
| 1604 gfx::ScrollOffset new_offset = | 1604 gfx::ScrollOffset new_offset = |
| 1605 ClampScrollOffsetToLimits(old_offset + adjusted_scroll, scroll_node); | 1605 ClampScrollOffsetToLimits(old_offset + adjusted_scroll, scroll_node); |
| 1606 if (SetScrollOffset(scroll_node->owner_id, new_offset)) | 1606 if (SetScrollOffset(scroll_node->owner_id, new_offset)) |
| 1607 layer_tree_impl->DidUpdateScrollOffset(scroll_node->owner_id, | 1607 layer_tree_impl->DidUpdateScrollOffset(scroll_node->owner_id); |
| 1608 scroll_node->transform_id); | |
| 1609 | 1608 |
| 1610 gfx::ScrollOffset unscrolled = | 1609 gfx::ScrollOffset unscrolled = |
| 1611 old_offset + gfx::ScrollOffset(scroll) - new_offset; | 1610 old_offset + gfx::ScrollOffset(scroll) - new_offset; |
| 1612 return gfx::Vector2dF(unscrolled.x(), unscrolled.y()); | 1611 return gfx::Vector2dF(unscrolled.x(), unscrolled.y()); |
| 1613 } | 1612 } |
| 1614 | 1613 |
| 1615 gfx::ScrollOffset ScrollTree::ClampScrollOffsetToLimits( | 1614 gfx::ScrollOffset ScrollTree::ClampScrollOffsetToLimits( |
| 1616 gfx::ScrollOffset offset, | 1615 gfx::ScrollOffset offset, |
| 1617 ScrollNode* scroll_node) const { | 1616 ScrollNode* scroll_node) const { |
| 1618 offset.SetToMin(MaxScrollOffset(scroll_node->id)); | 1617 offset.SetToMin(MaxScrollOffset(scroll_node->id)); |
| (...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2248 from_target.ConcatTransform(draw_transforms.from_target); | 2247 from_target.ConcatTransform(draw_transforms.from_target); |
| 2249 from_target.Scale(effect_node->surface_contents_scale.x(), | 2248 from_target.Scale(effect_node->surface_contents_scale.x(), |
| 2250 effect_node->surface_contents_scale.y()); | 2249 effect_node->surface_contents_scale.y()); |
| 2251 DCHECK(from_target.ApproximatelyEqual(*transform) || | 2250 DCHECK(from_target.ApproximatelyEqual(*transform) || |
| 2252 !draw_transforms.invertible); | 2251 !draw_transforms.invertible); |
| 2253 } | 2252 } |
| 2254 return success; | 2253 return success; |
| 2255 } | 2254 } |
| 2256 | 2255 |
| 2257 } // namespace cc | 2256 } // namespace cc |
| OLD | NEW |