Home | History | Annotate | Download | only in resources
      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