| Index: cc/layers/picture_layer_impl.cc
|
| diff --git a/cc/layers/picture_layer_impl.cc b/cc/layers/picture_layer_impl.cc
|
| index eb90e955d9e699b613001cf3552de27af76fdc81..6ec1f0a1b616f9694a366a247f4f56838291c09e 100644
|
| --- a/cc/layers/picture_layer_impl.cc
|
| +++ b/cc/layers/picture_layer_impl.cc
|
| @@ -106,6 +106,14 @@ scoped_ptr<TilingSetEvictionQueue> PictureLayerImpl::CreateEvictionQueue(
|
| new TilingSetEvictionQueue(tilings_.get(), tree_priority));
|
| }
|
|
|
| +scoped_ptr<TilingSetRasterQueue> PictureLayerImpl::CreateRasterQueue(
|
| + bool prioritize_low_res) {
|
| + if (!tilings_)
|
| + return make_scoped_ptr(new TilingSetRasterQueue());
|
| + return make_scoped_ptr(
|
| + new TilingSetRasterQueue(tilings_.get(), prioritize_low_res));
|
| +}
|
| +
|
| const char* PictureLayerImpl::LayerTypeAsString() const {
|
| return "cc::PictureLayerImpl";
|
| }
|
| @@ -1368,123 +1376,4 @@ bool PictureLayerImpl::AllTilesRequiredForDrawAreReadyToDraw() const {
|
| &PictureLayerTiling::IsTileRequiredForDrawIfVisible);
|
| }
|
|
|
| -PictureLayerImpl::LayerRasterTileIterator::LayerRasterTileIterator()
|
| - : layer_(nullptr), current_stage_(arraysize(stages_)) {
|
| -}
|
| -
|
| -PictureLayerImpl::LayerRasterTileIterator::LayerRasterTileIterator(
|
| - PictureLayerImpl* layer,
|
| - bool prioritize_low_res)
|
| - : layer_(layer), current_stage_(0) {
|
| - DCHECK(layer_);
|
| -
|
| - // Early out if the layer has no tilings.
|
| - if (!layer_->tilings_ || !layer_->tilings_->num_tilings()) {
|
| - current_stage_ = arraysize(stages_);
|
| - return;
|
| - }
|
| -
|
| - // Tiles without valid priority are treated as having lowest priority and
|
| - // never considered for raster.
|
| - if (!layer_->HasValidTilePriorities()) {
|
| - current_stage_ = arraysize(stages_);
|
| - return;
|
| - }
|
| -
|
| - // Find high and low res tilings and initialize the iterators.
|
| - for (size_t i = 0; i < layer_->tilings_->num_tilings(); ++i) {
|
| - PictureLayerTiling* tiling = layer_->tilings_->tiling_at(i);
|
| - if (tiling->resolution() == HIGH_RESOLUTION) {
|
| - iterators_[HIGH_RES] =
|
| - PictureLayerTiling::TilingRasterTileIterator(tiling);
|
| - }
|
| -
|
| - if (prioritize_low_res && tiling->resolution() == LOW_RESOLUTION) {
|
| - iterators_[LOW_RES] =
|
| - PictureLayerTiling::TilingRasterTileIterator(tiling);
|
| - }
|
| - }
|
| -
|
| - if (prioritize_low_res) {
|
| - stages_[0].iterator_type = LOW_RES;
|
| - stages_[0].tile_type = TilePriority::NOW;
|
| -
|
| - stages_[1].iterator_type = HIGH_RES;
|
| - stages_[1].tile_type = TilePriority::NOW;
|
| - } else {
|
| - stages_[0].iterator_type = HIGH_RES;
|
| - stages_[0].tile_type = TilePriority::NOW;
|
| -
|
| - stages_[1].iterator_type = LOW_RES;
|
| - stages_[1].tile_type = TilePriority::NOW;
|
| - }
|
| -
|
| - stages_[2].iterator_type = HIGH_RES;
|
| - stages_[2].tile_type = TilePriority::SOON;
|
| -
|
| - stages_[3].iterator_type = HIGH_RES;
|
| - stages_[3].tile_type = TilePriority::EVENTUALLY;
|
| -
|
| - IteratorType index = stages_[current_stage_].iterator_type;
|
| - TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type;
|
| - if (!iterators_[index] || iterators_[index].get_type() != tile_type)
|
| - AdvanceToNextStage();
|
| -}
|
| -
|
| -PictureLayerImpl::LayerRasterTileIterator::~LayerRasterTileIterator() {}
|
| -
|
| -PictureLayerImpl::LayerRasterTileIterator::operator bool() const {
|
| - return current_stage_ < arraysize(stages_);
|
| -}
|
| -
|
| -PictureLayerImpl::LayerRasterTileIterator&
|
| -PictureLayerImpl::LayerRasterTileIterator::
|
| -operator++() {
|
| - IteratorType index = stages_[current_stage_].iterator_type;
|
| - TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type;
|
| -
|
| - // First advance the iterator.
|
| - DCHECK(iterators_[index]);
|
| - DCHECK(iterators_[index].get_type() == tile_type);
|
| - ++iterators_[index];
|
| -
|
| - if (!iterators_[index] || iterators_[index].get_type() != tile_type)
|
| - AdvanceToNextStage();
|
| -
|
| - return *this;
|
| -}
|
| -
|
| -Tile* PictureLayerImpl::LayerRasterTileIterator::operator*() {
|
| - DCHECK(*this);
|
| -
|
| - IteratorType index = stages_[current_stage_].iterator_type;
|
| - DCHECK(iterators_[index]);
|
| - DCHECK(iterators_[index].get_type() == stages_[current_stage_].tile_type);
|
| -
|
| - return *iterators_[index];
|
| -}
|
| -
|
| -const Tile* PictureLayerImpl::LayerRasterTileIterator::operator*() const {
|
| - DCHECK(*this);
|
| -
|
| - IteratorType index = stages_[current_stage_].iterator_type;
|
| - DCHECK(iterators_[index]);
|
| - DCHECK(iterators_[index].get_type() == stages_[current_stage_].tile_type);
|
| -
|
| - return *iterators_[index];
|
| -}
|
| -
|
| -void PictureLayerImpl::LayerRasterTileIterator::AdvanceToNextStage() {
|
| - DCHECK_LT(current_stage_, arraysize(stages_));
|
| - ++current_stage_;
|
| - while (current_stage_ < arraysize(stages_)) {
|
| - IteratorType index = stages_[current_stage_].iterator_type;
|
| - TilePriority::PriorityBin tile_type = stages_[current_stage_].tile_type;
|
| -
|
| - if (iterators_[index] && iterators_[index].get_type() == tile_type)
|
| - break;
|
| - ++current_stage_;
|
| - }
|
| -}
|
| -
|
| } // namespace cc
|
|
|