| 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/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 1203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1214 void PictureLayerImpl::CleanUpTilingsOnActiveLayer( | 1214 void PictureLayerImpl::CleanUpTilingsOnActiveLayer( |
| 1215 std::vector<PictureLayerTiling*> used_tilings) { | 1215 std::vector<PictureLayerTiling*> used_tilings) { |
| 1216 DCHECK(layer_tree_impl()->IsActiveTree()); | 1216 DCHECK(layer_tree_impl()->IsActiveTree()); |
| 1217 if (tilings_->num_tilings() == 0) | 1217 if (tilings_->num_tilings() == 0) |
| 1218 return; | 1218 return; |
| 1219 | 1219 |
| 1220 float min_acceptable_high_res_scale = std::min( | 1220 float min_acceptable_high_res_scale = std::min( |
| 1221 raster_contents_scale_, ideal_contents_scale_); | 1221 raster_contents_scale_, ideal_contents_scale_); |
| 1222 float max_acceptable_high_res_scale = std::max( | 1222 float max_acceptable_high_res_scale = std::max( |
| 1223 raster_contents_scale_, ideal_contents_scale_); | 1223 raster_contents_scale_, ideal_contents_scale_); |
| 1224 float twin_low_res_scale = 0.f; |
| 1224 | 1225 |
| 1225 PictureLayerImpl* twin = twin_layer_; | 1226 PictureLayerImpl* twin = twin_layer_; |
| 1226 if (twin) { | 1227 if (twin) { |
| 1227 min_acceptable_high_res_scale = std::min( | 1228 min_acceptable_high_res_scale = std::min( |
| 1228 min_acceptable_high_res_scale, | 1229 min_acceptable_high_res_scale, |
| 1229 std::min(twin->raster_contents_scale_, twin->ideal_contents_scale_)); | 1230 std::min(twin->raster_contents_scale_, twin->ideal_contents_scale_)); |
| 1230 max_acceptable_high_res_scale = std::max( | 1231 max_acceptable_high_res_scale = std::max( |
| 1231 max_acceptable_high_res_scale, | 1232 max_acceptable_high_res_scale, |
| 1232 std::max(twin->raster_contents_scale_, twin->ideal_contents_scale_)); | 1233 std::max(twin->raster_contents_scale_, twin->ideal_contents_scale_)); |
| 1234 |
| 1235 for (size_t i = 0; i < twin->tilings_->num_tilings(); ++i) { |
| 1236 PictureLayerTiling* tiling = twin->tilings_->tiling_at(i); |
| 1237 if (tiling->resolution() == LOW_RESOLUTION) |
| 1238 twin_low_res_scale = tiling->contents_scale(); |
| 1239 } |
| 1233 } | 1240 } |
| 1234 | 1241 |
| 1235 std::vector<PictureLayerTiling*> to_remove; | 1242 std::vector<PictureLayerTiling*> to_remove; |
| 1236 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { | 1243 for (size_t i = 0; i < tilings_->num_tilings(); ++i) { |
| 1237 PictureLayerTiling* tiling = tilings_->tiling_at(i); | 1244 PictureLayerTiling* tiling = tilings_->tiling_at(i); |
| 1238 | 1245 |
| 1239 // Keep multiple high resolution tilings even if not used to help | 1246 // Keep multiple high resolution tilings even if not used to help |
| 1240 // activate earlier at non-ideal resolutions. | 1247 // activate earlier at non-ideal resolutions. |
| 1241 if (tiling->contents_scale() >= min_acceptable_high_res_scale && | 1248 if (tiling->contents_scale() >= min_acceptable_high_res_scale && |
| 1242 tiling->contents_scale() <= max_acceptable_high_res_scale) | 1249 tiling->contents_scale() <= max_acceptable_high_res_scale) |
| 1243 continue; | 1250 continue; |
| 1244 | 1251 |
| 1245 // Keep low resolution tilings, if the layer should have them. | 1252 // Keep low resolution tilings, if the layer should have them. |
| 1246 if (tiling->resolution() == LOW_RESOLUTION && | 1253 if (layer_tree_impl()->create_low_res_tiling()) { |
| 1247 layer_tree_impl()->create_low_res_tiling()) | 1254 if (tiling->resolution() == LOW_RESOLUTION || |
| 1248 continue; | 1255 tiling->contents_scale() == twin_low_res_scale) |
| 1256 continue; |
| 1257 } |
| 1249 | 1258 |
| 1250 // Don't remove tilings that are being used (and thus would cause a flash.) | 1259 // Don't remove tilings that are being used (and thus would cause a flash.) |
| 1251 if (std::find(used_tilings.begin(), used_tilings.end(), tiling) != | 1260 if (std::find(used_tilings.begin(), used_tilings.end(), tiling) != |
| 1252 used_tilings.end()) | 1261 used_tilings.end()) |
| 1253 continue; | 1262 continue; |
| 1254 | 1263 |
| 1255 to_remove.push_back(tiling); | 1264 to_remove.push_back(tiling); |
| 1256 } | 1265 } |
| 1257 | 1266 |
| 1258 for (size_t i = 0; i < to_remove.size(); ++i) { | 1267 for (size_t i = 0; i < to_remove.size(); ++i) { |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1639 return iterator_index_ < iterators_.size(); | 1648 return iterator_index_ < iterators_.size(); |
| 1640 } | 1649 } |
| 1641 | 1650 |
| 1642 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( | 1651 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( |
| 1643 PictureLayerTiling::TilingEvictionTileIterator* it) const { | 1652 PictureLayerTiling::TilingEvictionTileIterator* it) const { |
| 1644 return it->get_type() == iteration_stage_ && | 1653 return it->get_type() == iteration_stage_ && |
| 1645 (**it)->required_for_activation() == required_for_activation_; | 1654 (**it)->required_for_activation() == required_for_activation_; |
| 1646 } | 1655 } |
| 1647 | 1656 |
| 1648 } // namespace cc | 1657 } // namespace cc |
| OLD | NEW |