| Index: cc/resources/tiling_set_raster_queue_required.cc
|
| diff --git a/cc/resources/tiling_set_raster_queue_required.cc b/cc/resources/tiling_set_raster_queue_required.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..035509653fc87e3d468504db367a1a3d2d6b55fb
|
| --- /dev/null
|
| +++ b/cc/resources/tiling_set_raster_queue_required.cc
|
| @@ -0,0 +1,61 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "cc/resources/tiling_set_raster_queue_required.h"
|
| +
|
| +namespace cc {
|
| +
|
| +TilingSetRasterQueueRequired::TilingSetRasterQueueRequired(
|
| + PictureLayerTilingSet* tiling_set,
|
| + RasterTilePriorityQueue::Type type)
|
| + : type_(type) {
|
| + DCHECK(type != RasterTilePriorityQueue::Type::ALL);
|
| + DCHECK(tiling_set);
|
| +
|
| + PictureLayerTiling* tiling =
|
| + tiling_set->FindTilingWithResolution(HIGH_RESOLUTION);
|
| + DCHECK(tiling);
|
| + iterator_ = PictureLayerTiling::TilingRasterTileIterator(tiling);
|
| + while (iterator_ && iterator_.get_type() == TilePriority::NOW) {
|
| + if (IsTileRequired(*iterator_))
|
| + break;
|
| + ++iterator_;
|
| + }
|
| +}
|
| +
|
| +TilingSetRasterQueueRequired::~TilingSetRasterQueueRequired() {
|
| +}
|
| +
|
| +bool TilingSetRasterQueueRequired::IsEmpty() const {
|
| + return !iterator_ || iterator_.get_type() != TilePriority::NOW;
|
| +}
|
| +
|
| +void TilingSetRasterQueueRequired::Pop() {
|
| + DCHECK(!IsEmpty());
|
| + ++iterator_;
|
| + while (iterator_ && iterator_.get_type() == TilePriority::NOW) {
|
| + if (IsTileRequired(*iterator_))
|
| + break;
|
| + ++iterator_;
|
| + }
|
| +}
|
| +
|
| +Tile* TilingSetRasterQueueRequired::Top() {
|
| + DCHECK(!IsEmpty());
|
| + return *iterator_;
|
| +}
|
| +
|
| +const Tile* TilingSetRasterQueueRequired::Top() const {
|
| + DCHECK(!IsEmpty());
|
| + return *iterator_;
|
| +}
|
| +
|
| +bool TilingSetRasterQueueRequired::IsTileRequired(const Tile* tile) const {
|
| + return (type_ == RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION &&
|
| + tile->required_for_activation()) ||
|
| + (type_ == RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW &&
|
| + tile->required_for_draw());
|
| +}
|
| +
|
| +} // namespace cc
|
|
|