Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / cc / resources / eviction_tile_priority_queue.h
1 // Copyright 2014 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.
4
5 #ifndef CC_RESOURCES_EVICTION_TILE_PRIORITY_QUEUE_H_
6 #define CC_RESOURCES_EVICTION_TILE_PRIORITY_QUEUE_H_
7
8 #include <utility>
9 #include <vector>
10
11 #include "cc/base/cc_export.h"
12 #include "cc/layers/picture_layer_impl.h"
13 #include "cc/resources/tile_priority.h"
14
15 namespace cc {
16
17 class CC_EXPORT EvictionTilePriorityQueue {
18  public:
19   struct PairedPictureLayerQueue {
20     PairedPictureLayerQueue();
21     PairedPictureLayerQueue(const PictureLayerImpl::Pair& layer_pair,
22                             TreePriority tree_priority);
23     ~PairedPictureLayerQueue();
24
25     bool IsEmpty() const;
26     Tile* Top(TreePriority tree_priority);
27     void Pop(TreePriority tree_priority);
28
29     WhichTree NextTileIteratorTree(TreePriority tree_priority) const;
30
31     PictureLayerImpl::LayerEvictionTileIterator active_iterator;
32     PictureLayerImpl::LayerEvictionTileIterator pending_iterator;
33
34     // TODO(vmpstr): Investigate removing this.
35     std::vector<Tile*> returned_shared_tiles;
36   };
37
38   EvictionTilePriorityQueue();
39   ~EvictionTilePriorityQueue();
40
41   void Build(const std::vector<PictureLayerImpl::Pair>& paired_layers,
42              TreePriority tree_priority);
43   void Reset();
44
45   bool IsEmpty() const;
46   Tile* Top();
47   void Pop();
48
49  private:
50   // TODO(vmpstr): This is potentially unnecessary if it becomes the case that
51   // PairedPictureLayerQueue is fast enough to copy. In that case, we can use
52   // objects directly (ie std::vector<PairedPictureLayerQueue>).
53   ScopedPtrVector<PairedPictureLayerQueue> paired_queues_;
54   TreePriority tree_priority_;
55
56   DISALLOW_COPY_AND_ASSIGN(EvictionTilePriorityQueue);
57 };
58
59 }  // namespace cc
60
61 #endif  // CC_RESOURCES_EVICTION_TILE_PRIORITY_QUEUE_H_