| 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/resources/picture_layer_tiling.h" | 5 #include "cc/resources/picture_layer_tiling.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 #include <limits> | 9 #include <limits> |
| 10 | 10 |
| (...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 765 | 765 |
| 766 void PictureLayerTiling::UpdateEvictionCacheIfNeeded( | 766 void PictureLayerTiling::UpdateEvictionCacheIfNeeded( |
| 767 TreePriority tree_priority) { | 767 TreePriority tree_priority) { |
| 768 if (eviction_tiles_cache_valid_ && | 768 if (eviction_tiles_cache_valid_ && |
| 769 eviction_cache_tree_priority_ == tree_priority) | 769 eviction_cache_tree_priority_ == tree_priority) |
| 770 return; | 770 return; |
| 771 | 771 |
| 772 eviction_tiles_cache_.clear(); | 772 eviction_tiles_cache_.clear(); |
| 773 eviction_tiles_cache_.reserve(tiles_.size()); | 773 eviction_tiles_cache_.reserve(tiles_.size()); |
| 774 for (TileMap::iterator it = tiles_.begin(); it != tiles_.end(); ++it) { | 774 for (TileMap::iterator it = tiles_.begin(); it != tiles_.end(); ++it) { |
| 775 DCHECK(it->second); |
| 776 |
| 775 // TODO(vmpstr): This should update the priority if UpdateTilePriorities | 777 // TODO(vmpstr): This should update the priority if UpdateTilePriorities |
| 776 // changes not to do this. | 778 // changes not to do this. |
| 777 eviction_tiles_cache_.push_back(it->second); | 779 eviction_tiles_cache_.push_back(it->second); |
| 778 } | 780 } |
| 779 | 781 |
| 780 std::sort(eviction_tiles_cache_.begin(), | 782 std::sort(eviction_tiles_cache_.begin(), |
| 781 eviction_tiles_cache_.end(), | 783 eviction_tiles_cache_.end(), |
| 782 TileEvictionOrder(tree_priority)); | 784 TileEvictionOrder(tree_priority)); |
| 783 eviction_tiles_cache_valid_ = true; | 785 eviction_tiles_cache_valid_ = true; |
| 784 eviction_cache_tree_priority_ = tree_priority; | 786 eviction_cache_tree_priority_ = tree_priority; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 811 } | 813 } |
| 812 | 814 |
| 813 current_tile_ = | 815 current_tile_ = |
| 814 tiling_->TileAt(visible_iterator_.index_x(), visible_iterator_.index_y()); | 816 tiling_->TileAt(visible_iterator_.index_x(), visible_iterator_.index_y()); |
| 815 if (!current_tile_ || !TileNeedsRaster(current_tile_)) | 817 if (!current_tile_ || !TileNeedsRaster(current_tile_)) |
| 816 ++(*this); | 818 ++(*this); |
| 817 } | 819 } |
| 818 | 820 |
| 819 PictureLayerTiling::TilingRasterTileIterator::~TilingRasterTileIterator() {} | 821 PictureLayerTiling::TilingRasterTileIterator::~TilingRasterTileIterator() {} |
| 820 | 822 |
| 823 bool |
| 824 PictureLayerTiling::TilingRasterTileIterator::HasTilesRequiredForActivation() |
| 825 const { |
| 826 if (!*this || get_type() != TilePriority::NOW) |
| 827 return false; |
| 828 |
| 829 for (TilingData::Iterator it = visible_iterator_; it; ++it) { |
| 830 std::pair<int, int> next_index = visible_iterator_.index(); |
| 831 Tile* tile = tiling_->TileAt(next_index.first, next_index.second); |
| 832 if (tile && tile->required_for_activation()) |
| 833 return true; |
| 834 } |
| 835 return false; |
| 836 } |
| 837 |
| 821 void PictureLayerTiling::TilingRasterTileIterator::AdvancePhase() { | 838 void PictureLayerTiling::TilingRasterTileIterator::AdvancePhase() { |
| 822 DCHECK_LT(type_, TilePriority::EVENTUALLY); | 839 DCHECK_LT(type_, TilePriority::EVENTUALLY); |
| 823 | 840 |
| 824 do { | 841 do { |
| 825 type_ = static_cast<TilePriority::PriorityBin>(type_ + 1); | 842 type_ = static_cast<TilePriority::PriorityBin>(type_ + 1); |
| 826 if (type_ == TilePriority::EVENTUALLY) { | 843 if (type_ == TilePriority::EVENTUALLY) { |
| 827 spiral_iterator_ = TilingData::SpiralDifferenceIterator( | 844 spiral_iterator_ = TilingData::SpiralDifferenceIterator( |
| 828 &tiling_->tiling_data_, | 845 &tiling_->tiling_data_, |
| 829 eventually_rect_in_content_space_, | 846 eventually_rect_in_content_space_, |
| 830 skewport_in_content_space_, | 847 skewport_in_content_space_, |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 923 tiling_->UpdateEvictionCacheIfNeeded(tree_priority_); | 940 tiling_->UpdateEvictionCacheIfNeeded(tree_priority_); |
| 924 tile_iterator_ = tiling_->eviction_tiles_cache_.begin(); | 941 tile_iterator_ = tiling_->eviction_tiles_cache_.begin(); |
| 925 is_valid_ = true; | 942 is_valid_ = true; |
| 926 if (tile_iterator_ != tiling_->eviction_tiles_cache_.end() && | 943 if (tile_iterator_ != tiling_->eviction_tiles_cache_.end() && |
| 927 !(*tile_iterator_)->HasResources()) { | 944 !(*tile_iterator_)->HasResources()) { |
| 928 ++(*this); | 945 ++(*this); |
| 929 } | 946 } |
| 930 } | 947 } |
| 931 | 948 |
| 932 } // namespace cc | 949 } // namespace cc |
| OLD | NEW |