12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/resource_update_queue.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/resources/prioritized_resource.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ResourceUpdateQueue::ResourceUpdateQueue() {} 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ResourceUpdateQueue::~ResourceUpdateQueue() {} 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ResourceUpdateQueue::AppendFullUpload(const ResourceUpdate& upload) { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) full_entries_.push_back(upload); 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ResourceUpdateQueue::AppendPartialUpload(const ResourceUpdate& upload) { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) partial_entries_.push_back(upload); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ResourceUpdateQueue::ClearUploadsToEvictedResources() { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ClearUploadsToEvictedResources(&full_entries_); 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ClearUploadsToEvictedResources(&partial_entries_); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void ResourceUpdateQueue::ClearUploadsToEvictedResources( 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::deque<ResourceUpdate>* entry_queue) { 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::deque<ResourceUpdate> temp; 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) entry_queue->swap(temp); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) while (temp.size()) { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ResourceUpdate upload = temp.front(); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) temp.pop_front(); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!upload.texture->BackingResourceWasEvicted()) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) entry_queue->push_back(upload); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ResourceUpdate ResourceUpdateQueue::TakeFirstFullUpload() { 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ResourceUpdate first = full_entries_.front(); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) full_entries_.pop_front(); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return first; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ResourceUpdate ResourceUpdateQueue::TakeFirstPartialUpload() { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ResourceUpdate first = partial_entries_.front(); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) partial_entries_.pop_front(); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return first; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool ResourceUpdateQueue::HasMoreUpdates() const { 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return !full_entries_.empty() || !partial_entries_.empty(); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 57