1 // Copyright 2012 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 #include "cc/resources/resource_update_queue.h" 6 7 #include "cc/resources/prioritized_resource.h" 8 9 namespace cc { 10 11 ResourceUpdateQueue::ResourceUpdateQueue() {} 12 13 ResourceUpdateQueue::~ResourceUpdateQueue() {} 14 15 void ResourceUpdateQueue::AppendFullUpload(const ResourceUpdate& upload) { 16 full_entries_.push_back(upload); 17 } 18 19 void ResourceUpdateQueue::AppendPartialUpload(const ResourceUpdate& upload) { 20 partial_entries_.push_back(upload); 21 } 22 23 void ResourceUpdateQueue::ClearUploadsToEvictedResources() { 24 ClearUploadsToEvictedResources(&full_entries_); 25 ClearUploadsToEvictedResources(&partial_entries_); 26 } 27 28 void ResourceUpdateQueue::ClearUploadsToEvictedResources( 29 std::deque<ResourceUpdate>* entry_queue) { 30 std::deque<ResourceUpdate> temp; 31 entry_queue->swap(temp); 32 while (temp.size()) { 33 ResourceUpdate upload = temp.front(); 34 temp.pop_front(); 35 if (!upload.texture->BackingResourceWasEvicted()) 36 entry_queue->push_back(upload); 37 } 38 } 39 40 ResourceUpdate ResourceUpdateQueue::TakeFirstFullUpload() { 41 ResourceUpdate first = full_entries_.front(); 42 full_entries_.pop_front(); 43 return first; 44 } 45 46 ResourceUpdate ResourceUpdateQueue::TakeFirstPartialUpload() { 47 ResourceUpdate first = partial_entries_.front(); 48 partial_entries_.pop_front(); 49 return first; 50 } 51 52 bool ResourceUpdateQueue::HasMoreUpdates() const { 53 return !full_entries_.empty() || !partial_entries_.empty(); 54 } 55 56 } // namespace cc 57