Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/resources/resource_update_queue.h" | 5 #include "cc/resources/resource_update_queue.h" |
| 6 | 6 |
| 7 #include "cc/resources/prioritized_resource.h" | 7 #include "cc/resources/prioritized_resource.h" |
| 8 | 8 |
| 9 namespace cc { | 9 namespace cc { |
| 10 | 10 |
| 11 ResourceUpdateQueue::ResourceUpdateQueue() | 11 ResourceUpdateQueue::ResourceUpdateQueue() {} |
| 12 { | 12 |
| 13 ResourceUpdateQueue::~ResourceUpdateQueue() {} | |
| 14 | |
| 15 void ResourceUpdateQueue::AppendFullUpload(const ResourceUpdate& upload) { | |
| 16 full_entries_.push_back(upload); | |
| 13 } | 17 } |
| 14 | 18 |
| 15 ResourceUpdateQueue::~ResourceUpdateQueue() | 19 void ResourceUpdateQueue::AppendPartialUpload(const ResourceUpdate& upload) { |
| 16 { | 20 partial_entries_.push_back(upload); |
| 17 } | 21 } |
| 18 | 22 |
| 19 void ResourceUpdateQueue::appendFullUpload(const ResourceUpdate& upload) | 23 void ResourceUpdateQueue::AppendCopy(TextureCopier::Parameters copy) { |
| 20 { | 24 copy_entries_.push_back(copy); |
| 21 m_fullEntries.push_back(upload); | |
| 22 } | 25 } |
| 23 | 26 |
| 24 void ResourceUpdateQueue::appendPartialUpload(const ResourceUpdate& upload) | 27 void ResourceUpdateQueue::ClearUploadsToEvictedResources() { |
| 25 { | 28 ClearUploadsToEvictedResources(&full_entries_); |
| 26 m_partialEntries.push_back(upload); | 29 ClearUploadsToEvictedResources(&partial_entries_); |
| 27 } | 30 } |
| 28 | 31 |
| 29 void ResourceUpdateQueue::appendCopy(TextureCopier::Parameters copy) | 32 void ResourceUpdateQueue::ClearUploadsToEvictedResources( |
| 30 { | 33 std::deque<ResourceUpdate>* entry_queue) { |
| 31 m_copyEntries.push_back(copy); | 34 std::deque<ResourceUpdate> temp; |
| 35 entry_queue->swap(temp); | |
| 36 while (temp.size()) { | |
| 37 ResourceUpdate upload = temp.front(); | |
| 38 temp.pop_front(); | |
| 39 if (!upload.texture->BackingResourceWasEvicted()) | |
| 40 entry_queue->push_back(upload); | |
| 41 } | |
| 32 } | 42 } |
| 33 | 43 |
| 34 void ResourceUpdateQueue::clearUploadsToEvictedResources() | 44 ResourceUpdate ResourceUpdateQueue::TakeFirstFullUpload() { |
| 35 { | 45 ResourceUpdate first = full_entries_.front(); |
| 36 clearUploadsToEvictedResources(m_fullEntries); | 46 full_entries_.pop_front(); |
| 37 clearUploadsToEvictedResources(m_partialEntries); | 47 return first; |
| 38 } | 48 } |
| 39 | 49 |
| 40 void ResourceUpdateQueue::clearUploadsToEvictedResources(std::deque<ResourceUpda te>& entryQueue) | 50 ResourceUpdate ResourceUpdateQueue::TakeFirstPartialUpload() { |
| 41 { | 51 ResourceUpdate first = partial_entries_.front(); |
| 42 std::deque<ResourceUpdate> temp; | 52 partial_entries_.pop_front(); |
| 43 entryQueue.swap(temp); | 53 return first; |
| 44 while (temp.size()) { | |
| 45 ResourceUpdate upload = temp.front(); | |
| 46 temp.pop_front(); | |
| 47 if (!upload.texture->BackingResourceWasEvicted()) | |
| 48 entryQueue.push_back(upload); | |
| 49 } | |
| 50 } | 54 } |
| 51 | 55 |
| 52 ResourceUpdate ResourceUpdateQueue::takeFirstFullUpload() | 56 TextureCopier::Parameters ResourceUpdateQueue::TakeFirstCopy() { |
| 53 { | 57 TextureCopier::Parameters first = copy_entries_.front(); |
| 54 ResourceUpdate first = m_fullEntries.front(); | 58 copy_entries_.pop_front(); |
| 55 m_fullEntries.pop_front(); | 59 return first; |
| 56 return first; | |
| 57 } | 60 } |
| 58 | 61 |
| 59 ResourceUpdate ResourceUpdateQueue::takeFirstPartialUpload() | 62 bool ResourceUpdateQueue::HasMoreUpdates() const { |
| 60 { | 63 return full_entries_.size() || partial_entries_.size() || |
| 61 ResourceUpdate first = m_partialEntries.front(); | 64 copy_entries_.size(); |
|
jamesr
2013/03/20 19:59:30
.empty() would be slightly better, I think
| |
| 62 m_partialEntries.pop_front(); | |
| 63 return first; | |
| 64 } | |
| 65 | |
| 66 TextureCopier::Parameters ResourceUpdateQueue::takeFirstCopy() | |
| 67 { | |
| 68 TextureCopier::Parameters first = m_copyEntries.front(); | |
| 69 m_copyEntries.pop_front(); | |
| 70 return first; | |
| 71 } | |
| 72 | |
| 73 bool ResourceUpdateQueue::hasMoreUpdates() const | |
| 74 { | |
| 75 return m_fullEntries.size() || m_partialEntries.size() || m_copyEntries.size (); | |
| 76 } | 65 } |
| 77 | 66 |
| 78 } // namespace cc | 67 } // namespace cc |
| OLD | NEW |