1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_RESOURCES_RASTER_TILE_PRIORITY_QUEUE_ALL_H_
6 #define CC_RESOURCES_RASTER_TILE_PRIORITY_QUEUE_ALL_H_
12 #include "cc/base/cc_export.h"
13 #include "cc/layers/picture_layer_impl.h"
14 #include "cc/resources/raster_tile_priority_queue.h"
15 #include "cc/resources/tile_priority.h"
16 #include "cc/resources/tiling_set_raster_queue_all.h"
20 class CC_EXPORT RasterTilePriorityQueueAll
: public RasterTilePriorityQueue
{
22 class PairedTilingSetQueue
{
24 PairedTilingSetQueue();
25 PairedTilingSetQueue(const PictureLayerImpl::Pair
& layer_pair
,
26 TreePriority tree_priority
);
27 ~PairedTilingSetQueue();
30 Tile
* Top(TreePriority tree_priority
);
31 void Pop(TreePriority tree_priority
);
33 WhichTree
NextTileIteratorTree(TreePriority tree_priority
) const;
34 void SkipTilesReturnedByTwin(TreePriority tree_priority
);
36 scoped_refptr
<base::trace_event::ConvertableToTraceFormat
> StateAsValue()
39 const TilingSetRasterQueueAll
* active_queue() const {
40 return active_queue_
.get();
42 const TilingSetRasterQueueAll
* pending_queue() const {
43 return pending_queue_
.get();
47 scoped_ptr
<TilingSetRasterQueueAll
> active_queue_
;
48 scoped_ptr
<TilingSetRasterQueueAll
> pending_queue_
;
49 bool has_both_layers_
;
51 // Set of returned tiles (excluding the current one) for DCHECKing.
52 std::set
<const Tile
*> returned_tiles_for_debug_
;
55 RasterTilePriorityQueueAll();
56 ~RasterTilePriorityQueueAll() override
;
58 bool IsEmpty() const override
;
63 friend class RasterTilePriorityQueue
;
65 void Build(const std::vector
<PictureLayerImpl::Pair
>& paired_layers
,
66 TreePriority tree_priority
);
68 // TODO(vmpstr): This is potentially unnecessary if it becomes the case that
69 // PairedTilingSetQueue is fast enough to copy. In that case, we can use
70 // objects directly (ie std::vector<PairedTilingSetQueue>.
71 ScopedPtrVector
<PairedTilingSetQueue
> paired_queues_
;
72 TreePriority tree_priority_
;
74 DISALLOW_COPY_AND_ASSIGN(RasterTilePriorityQueueAll
);
79 #endif // CC_RESOURCES_RASTER_TILE_PRIORITY_QUEUE_ALL_H_