OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/rasterizer.h" | 5 #include "cc/resources/rasterizer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 namespace cc { | 9 namespace cc { |
10 | 10 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 RasterTask::RasterTask(const Resource* resource, | 49 RasterTask::RasterTask(const Resource* resource, |
50 ImageDecodeTask::Vector* dependencies) | 50 ImageDecodeTask::Vector* dependencies) |
51 : resource_(resource) { | 51 : resource_(resource) { |
52 dependencies_.swap(*dependencies); | 52 dependencies_.swap(*dependencies); |
53 } | 53 } |
54 | 54 |
55 RasterTask::~RasterTask() {} | 55 RasterTask::~RasterTask() {} |
56 | 56 |
57 RasterTask* RasterTask::AsRasterTask() { return this; } | 57 RasterTask* RasterTask::AsRasterTask() { return this; } |
58 | 58 |
59 RasterTaskQueue::Item::Item(RasterTask* task, bool required_for_activation) | 59 RasterTaskQueue::TaskSetSizes::TaskSetSizes() { |
60 : task(task), required_for_activation(required_for_activation) {} | 60 for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++) |
| 61 sizes_[task_set] = 0; |
| 62 } |
| 63 |
| 64 RasterTaskQueue::Item::TaskSetCollection |
| 65 RasterTaskQueue::TaskSetSizes::ToTaskSetCollection() const { |
| 66 Item::TaskSetCollection task_set_collection; |
| 67 for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++) { |
| 68 if (sizes_[task_set] > 0) |
| 69 task_set_collection[task_set] = true; |
| 70 } |
| 71 return task_set_collection; |
| 72 } |
| 73 |
| 74 size_t& RasterTaskQueue::TaskSetSizes::operator[](TaskSet task_set) { |
| 75 return sizes_[task_set]; |
| 76 } |
| 77 |
| 78 const size_t& RasterTaskQueue::TaskSetSizes::operator[]( |
| 79 TaskSet task_set) const { |
| 80 return sizes_[task_set]; |
| 81 } |
| 82 |
| 83 bool RasterTaskQueue::TaskSetSizes::operator==( |
| 84 const TaskSetSizes& other) const { |
| 85 for (size_t i = 0; i < kMaxTaskSet; i++) { |
| 86 if (sizes_[i] != other.sizes_[i]) |
| 87 return false; |
| 88 } |
| 89 return true; |
| 90 } |
| 91 |
| 92 void RasterTaskQueue::TaskSetSizes::operator+=( |
| 93 const Item::TaskSetCollection& task_set_collection) { |
| 94 for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++) { |
| 95 if (task_set_collection[task_set]) |
| 96 sizes_[task_set]++; |
| 97 } |
| 98 } |
| 99 |
| 100 void RasterTaskQueue::TaskSetSizes::operator-=( |
| 101 const Item::TaskSetCollection& task_set_collection) { |
| 102 for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++) { |
| 103 if (task_set_collection[task_set]) |
| 104 sizes_[task_set]--; |
| 105 } |
| 106 } |
| 107 |
| 108 RasterTaskQueue::Item::Item(RasterTask* task, |
| 109 const Item::TaskSetCollection& task_sets) |
| 110 : task(task), task_sets(task_sets) { |
| 111 } |
61 | 112 |
62 RasterTaskQueue::Item::~Item() {} | 113 RasterTaskQueue::Item::~Item() {} |
63 | 114 |
64 RasterTaskQueue::RasterTaskQueue() : required_for_activation_count(0u) {} | 115 RasterTaskQueue::RasterTaskQueue() { |
| 116 } |
65 | 117 |
66 RasterTaskQueue::~RasterTaskQueue() {} | 118 RasterTaskQueue::~RasterTaskQueue() {} |
67 | 119 |
| 120 bool RasterTaskQueue::VerifyTaskSetSizes() const { |
| 121 TaskSetSizes actual_task_set_sizes; |
| 122 Item::Vector::const_iterator it = items.begin(); |
| 123 while (it != items.end()) { |
| 124 actual_task_set_sizes += it->task_sets; |
| 125 ++it; |
| 126 } |
| 127 return actual_task_set_sizes == task_set_sizes; |
| 128 } |
| 129 |
68 void RasterTaskQueue::Swap(RasterTaskQueue* other) { | 130 void RasterTaskQueue::Swap(RasterTaskQueue* other) { |
69 items.swap(other->items); | 131 items.swap(other->items); |
70 std::swap(required_for_activation_count, | 132 std::swap(task_set_sizes, other->task_set_sizes); |
71 other->required_for_activation_count); | |
72 } | 133 } |
73 | 134 |
74 void RasterTaskQueue::Reset() { | 135 void RasterTaskQueue::Reset() { |
75 required_for_activation_count = 0u; | |
76 items.clear(); | 136 items.clear(); |
| 137 task_set_sizes = TaskSetSizes(); |
77 } | 138 } |
78 | 139 |
79 } // namespace cc | 140 } // namespace cc |
OLD | NEW |