Index: cc/resources/raster_tile_priority_queue.cc |
diff --git a/cc/resources/raster_tile_priority_queue.cc b/cc/resources/raster_tile_priority_queue.cc |
index 3dae625ae3b92349772c93149394986599ee8a2f..f3e5df4c251ebf818d40b78cd4142d32b59e1ae5 100644 |
--- a/cc/resources/raster_tile_priority_queue.cc |
+++ b/cc/resources/raster_tile_priority_queue.cc |
@@ -14,21 +14,21 @@ class RasterOrderComparator { |
: tree_priority_(tree_priority) {} |
bool operator()( |
- const RasterTilePriorityQueue::PairedPictureLayerQueue& a, |
- const RasterTilePriorityQueue::PairedPictureLayerQueue& b) const { |
- if (a.IsEmpty()) |
+ const RasterTilePriorityQueue::PairedPictureLayerQueue* a, |
+ const RasterTilePriorityQueue::PairedPictureLayerQueue* b) const { |
+ if (a->IsEmpty()) |
return true; |
- if (b.IsEmpty()) |
+ if (b->IsEmpty()) |
return false; |
- WhichTree a_tree = a.NextTileIteratorTree(tree_priority_); |
+ WhichTree a_tree = a->NextTileIteratorTree(tree_priority_); |
const PictureLayerImpl::LayerRasterTileIterator* a_iterator = |
- a_tree == ACTIVE_TREE ? &a.active_iterator : &a.pending_iterator; |
+ a_tree == ACTIVE_TREE ? &a->active_iterator : &a->pending_iterator; |
- WhichTree b_tree = b.NextTileIteratorTree(tree_priority_); |
+ WhichTree b_tree = b->NextTileIteratorTree(tree_priority_); |
const PictureLayerImpl::LayerRasterTileIterator* b_iterator = |
- b_tree == ACTIVE_TREE ? &b.active_iterator : &b.pending_iterator; |
+ b_tree == ACTIVE_TREE ? &b->active_iterator : &b->pending_iterator; |
const Tile* a_tile = **a_iterator; |
const Tile* b_tile = **b_iterator; |
@@ -83,38 +83,33 @@ void RasterTilePriorityQueue::Build( |
paired_layers.begin(); |
it != paired_layers.end(); |
++it) { |
- paired_queues_.push_back(PairedPictureLayerQueue(*it, tree_priority_)); |
+ paired_queues_heap_.push_back( |
+ make_scoped_ptr(new PairedPictureLayerQueue(*it, tree_priority_))); |
} |
- std::make_heap(paired_queues_.begin(), |
- paired_queues_.end(), |
- RasterOrderComparator(tree_priority_)); |
+ paired_queues_heap_.make_heap(RasterOrderComparator(tree_priority_)); |
} |
void RasterTilePriorityQueue::Reset() { |
- paired_queues_.clear(); |
+ paired_queues_heap_.clear(); |
} |
bool RasterTilePriorityQueue::IsEmpty() const { |
- return paired_queues_.empty() || paired_queues_.front().IsEmpty(); |
+ return paired_queues_heap_.empty() || paired_queues_heap_.front()->IsEmpty(); |
} |
Tile* RasterTilePriorityQueue::Top() { |
DCHECK(!IsEmpty()); |
- return paired_queues_.front().Top(tree_priority_); |
+ return paired_queues_heap_.front()->Top(tree_priority_); |
} |
void RasterTilePriorityQueue::Pop() { |
DCHECK(!IsEmpty()); |
- std::pop_heap(paired_queues_.begin(), |
- paired_queues_.end(), |
- RasterOrderComparator(tree_priority_)); |
- PairedPictureLayerQueue& paired_queue = paired_queues_.back(); |
- paired_queue.Pop(tree_priority_); |
- std::push_heap(paired_queues_.begin(), |
- paired_queues_.end(), |
- RasterOrderComparator(tree_priority_)); |
+ paired_queues_heap_.pop_heap(RasterOrderComparator(tree_priority_)); |
+ PairedPictureLayerQueue* paired_queue = paired_queues_heap_.back(); |
+ paired_queue->Pop(tree_priority_); |
+ paired_queues_heap_.push_heap(RasterOrderComparator(tree_priority_)); |
} |
RasterTilePriorityQueue::PairedPictureLayerQueue::PairedPictureLayerQueue() { |