diff options
author | vmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-23 01:42:48 +0000 |
---|---|---|
committer | vmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-23 01:42:48 +0000 |
commit | 1ffdfd008eef265ecb0242721ece82d922704526 (patch) | |
tree | 23c9cedb1c78122a9f5c357f9aeb2996910d574a /cc/resources | |
parent | 635c5a689d89890b783b89c3efda082d35e25f8a (diff) | |
download | chromium_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.cc | 38 | ||||
-rw-r--r-- | cc/resources/picture_layer_tiling.h | 8 |
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_; |