Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(510)

Side by Side Diff: cc/resources/rasterizer.cc

Issue 523243002: cc: Generalize raster task notifications (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698