| Index: cc/resources/tiling_set_raster_queue.h
|
| diff --git a/cc/resources/tiling_set_raster_queue.h b/cc/resources/tiling_set_raster_queue.h
|
| index 58faa8a78c90fc17fe83f11b39a38695f5b1e869..e3250369fd60fc2055f7ef423a42c107d9df3571 100644
|
| --- a/cc/resources/tiling_set_raster_queue.h
|
| +++ b/cc/resources/tiling_set_raster_queue.h
|
| @@ -7,6 +7,8 @@
|
|
|
| #include "cc/base/cc_export.h"
|
| #include "cc/resources/picture_layer_tiling_set.h"
|
| +#include "cc/resources/tile.h"
|
| +#include "cc/resources/tile_priority.h"
|
|
|
| namespace cc {
|
|
|
| @@ -23,6 +25,55 @@ class CC_EXPORT TilingSetRasterQueue {
|
| bool IsEmpty() const;
|
|
|
| private:
|
| + class TilingIterator {
|
| + public:
|
| + TilingIterator();
|
| + explicit TilingIterator(PictureLayerTiling* tiling,
|
| + TilingData* tiling_data);
|
| + ~TilingIterator();
|
| +
|
| + operator bool() const { return !!current_tile_; }
|
| + const Tile* operator*() const { return current_tile_; }
|
| + Tile* operator*() { return current_tile_; }
|
| + TilePriority::PriorityBin type() const {
|
| + switch (phase_) {
|
| + case VISIBLE_RECT:
|
| + return TilePriority::NOW;
|
| + case SKEWPORT_RECT:
|
| + case SOON_BORDER_RECT:
|
| + return TilePriority::SOON;
|
| + case EVENTUALLY_RECT:
|
| + return TilePriority::EVENTUALLY;
|
| + }
|
| + NOTREACHED();
|
| + return TilePriority::EVENTUALLY;
|
| + }
|
| +
|
| + TilingIterator& operator++();
|
| +
|
| + private:
|
| + enum Phase {
|
| + VISIBLE_RECT,
|
| + SKEWPORT_RECT,
|
| + SOON_BORDER_RECT,
|
| + EVENTUALLY_RECT
|
| + };
|
| +
|
| + void AdvancePhase();
|
| + bool TileNeedsRaster(Tile* tile) const {
|
| + return tile->NeedsRaster() && !tiling_->IsTileOccluded(tile);
|
| + }
|
| +
|
| + PictureLayerTiling* tiling_;
|
| + TilingData* tiling_data_;
|
| +
|
| + Phase phase_;
|
| +
|
| + Tile* current_tile_;
|
| + TilingData::Iterator visible_iterator_;
|
| + TilingData::SpiralDifferenceIterator spiral_iterator_;
|
| + };
|
| +
|
| enum IteratorType { LOW_RES, HIGH_RES, NUM_ITERATORS };
|
|
|
| void AdvanceToNextStage();
|
| @@ -38,7 +89,7 @@ class CC_EXPORT TilingSetRasterQueue {
|
|
|
| // One low res stage, and three high res stages.
|
| IterationStage stages_[4];
|
| - PictureLayerTiling::TilingRasterTileIterator iterators_[NUM_ITERATORS];
|
| + TilingIterator iterators_[NUM_ITERATORS];
|
| };
|
|
|
| } // namespace cc
|
|
|