summaryrefslogtreecommitdiffstats
path: root/cc/resources
diff options
context:
space:
mode:
authorvmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-23 01:42:48 +0000
committervmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-23 01:42:48 +0000
commit1ffdfd008eef265ecb0242721ece82d922704526 (patch)
tree23c9cedb1c78122a9f5c357f9aeb2996910d574a /cc/resources
parent635c5a689d89890b783b89c3efda082d35e25f8a (diff)
downloadchromium_src-1ffdfd008eef265ecb0242721ece82d922704526.zip
chromium_src-1ffdfd008eef265ecb0242721ece82d922704526.tar.gz
chromium_src-1ffdfd008eef265ecb0242721ece82d922704526.tar.bz2
cc: Remove lazy initialization from tiling iterators.
This patch removes lazy initializion from tiling iterators in order to keep the code simple to reason about. The cost for any initialization is paid in the ctor. R=reveman Review URL: https://codereview.chromium.org/407233002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@284829 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources')
-rw-r--r--cc/resources/picture_layer_tiling.cc38
-rw-r--r--cc/resources/picture_layer_tiling.h8
2 files changed, 19 insertions, 27 deletions
diff --git a/cc/resources/picture_layer_tiling.cc b/cc/resources/picture_layer_tiling.cc
index fdfbad9..20a57b8 100644
--- a/cc/resources/picture_layer_tiling.cc
+++ b/cc/resources/picture_layer_tiling.cc
@@ -944,26 +944,33 @@ operator++() {
}
PictureLayerTiling::TilingEvictionTileIterator::TilingEvictionTileIterator()
- : is_valid_(false), tiling_(NULL) {}
+ : tiling_(NULL) {
+}
PictureLayerTiling::TilingEvictionTileIterator::TilingEvictionTileIterator(
PictureLayerTiling* tiling,
TreePriority tree_priority)
- : is_valid_(false), tiling_(tiling), tree_priority_(tree_priority) {}
+ : tiling_(tiling), tree_priority_(tree_priority) {
+ tiling_->UpdateEvictionCacheIfNeeded(tree_priority_);
+ tile_iterator_ = tiling_->eviction_tiles_cache_.begin();
+ if (tile_iterator_ != tiling_->eviction_tiles_cache_.end() &&
+ !(*tile_iterator_)->HasResources()) {
+ ++(*this);
+ }
+}
PictureLayerTiling::TilingEvictionTileIterator::~TilingEvictionTileIterator() {}
-PictureLayerTiling::TilingEvictionTileIterator::operator bool() {
- if (!IsValid())
- Initialize();
-
- return IsValid() && tile_iterator_ != tiling_->eviction_tiles_cache_.end();
+PictureLayerTiling::TilingEvictionTileIterator::operator bool() const {
+ return tiling_ && tile_iterator_ != tiling_->eviction_tiles_cache_.end();
}
Tile* PictureLayerTiling::TilingEvictionTileIterator::operator*() {
- if (!IsValid())
- Initialize();
+ DCHECK(*this);
+ return *tile_iterator_;
+}
+const Tile* PictureLayerTiling::TilingEvictionTileIterator::operator*() const {
DCHECK(*this);
return *tile_iterator_;
}
@@ -980,17 +987,4 @@ operator++() {
return *this;
}
-void PictureLayerTiling::TilingEvictionTileIterator::Initialize() {
- if (!tiling_)
- return;
-
- tiling_->UpdateEvictionCacheIfNeeded(tree_priority_);
- tile_iterator_ = tiling_->eviction_tiles_cache_.begin();
- is_valid_ = true;
- if (tile_iterator_ != tiling_->eviction_tiles_cache_.end() &&
- !(*tile_iterator_)->HasResources()) {
- ++(*this);
- }
-}
-
} // namespace cc
diff --git a/cc/resources/picture_layer_tiling.h b/cc/resources/picture_layer_tiling.h
index 952c7af..7da1388 100644
--- a/cc/resources/picture_layer_tiling.h
+++ b/cc/resources/picture_layer_tiling.h
@@ -55,6 +55,7 @@ class CC_EXPORT PictureLayerTiling {
~TilingRasterTileIterator();
operator bool() const { return !!current_tile_; }
+ const Tile* operator*() const { return current_tile_; }
Tile* operator*() { return current_tile_; }
TilePriority::PriorityBin get_type() const { return type_; }
@@ -99,7 +100,8 @@ class CC_EXPORT PictureLayerTiling {
TreePriority tree_priority);
~TilingEvictionTileIterator();
- operator bool();
+ operator bool() const;
+ const Tile* operator*() const;
Tile* operator*();
TilingEvictionTileIterator& operator++();
TilePriority::PriorityBin get_type() {
@@ -110,10 +112,6 @@ class CC_EXPORT PictureLayerTiling {
}
private:
- void Initialize();
- bool IsValid() const { return is_valid_; }
-
- bool is_valid_;
PictureLayerTiling* tiling_;
TreePriority tree_priority_;
std::vector<Tile*>::iterator tile_iterator_;