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

Unified 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, 4 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 side-by-side diff with in-line comments
Download patch
Index: cc/resources/rasterizer.cc
diff --git a/cc/resources/rasterizer.cc b/cc/resources/rasterizer.cc
index df7e27ecebcc147cb745db354527c4804d794934..fc27cfd04707b050edad723f54b390b97efa3e50 100644
--- a/cc/resources/rasterizer.cc
+++ b/cc/resources/rasterizer.cc
@@ -56,24 +56,85 @@ RasterTask::~RasterTask() {}
RasterTask* RasterTask::AsRasterTask() { return this; }
-RasterTaskQueue::Item::Item(RasterTask* task, bool required_for_activation)
- : task(task), required_for_activation(required_for_activation) {}
+RasterTaskQueue::TaskSetSizes::TaskSetSizes() {
+ for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++)
+ sizes_[task_set] = 0;
+}
+
+RasterTaskQueue::Item::TaskSetCollection
+RasterTaskQueue::TaskSetSizes::ToTaskSetCollection() const {
+ Item::TaskSetCollection task_set_collection;
+ for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++) {
+ if (sizes_[task_set] > 0)
+ task_set_collection[task_set] = true;
+ }
+ return task_set_collection;
+}
+
+size_t& RasterTaskQueue::TaskSetSizes::operator[](TaskSet task_set) {
+ return sizes_[task_set];
+}
+
+const size_t& RasterTaskQueue::TaskSetSizes::operator[](
+ TaskSet task_set) const {
+ return sizes_[task_set];
+}
+
+bool RasterTaskQueue::TaskSetSizes::operator==(
+ const TaskSetSizes& other) const {
+ for (size_t i = 0; i < kMaxTaskSet; i++) {
+ if (sizes_[i] != other.sizes_[i])
+ return false;
+ }
+ return true;
+}
+
+void RasterTaskQueue::TaskSetSizes::operator+=(
+ const Item::TaskSetCollection& task_set_collection) {
+ for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++) {
+ if (task_set_collection[task_set])
+ sizes_[task_set]++;
+ }
+}
+
+void RasterTaskQueue::TaskSetSizes::operator-=(
+ const Item::TaskSetCollection& task_set_collection) {
+ for (TaskSet task_set = 0; task_set < kMaxTaskSet; task_set++) {
+ if (task_set_collection[task_set])
+ sizes_[task_set]--;
+ }
+}
+
+RasterTaskQueue::Item::Item(RasterTask* task,
+ const Item::TaskSetCollection& task_sets)
+ : task(task), task_sets(task_sets) {
+}
RasterTaskQueue::Item::~Item() {}
-RasterTaskQueue::RasterTaskQueue() : required_for_activation_count(0u) {}
+RasterTaskQueue::RasterTaskQueue() {
+}
RasterTaskQueue::~RasterTaskQueue() {}
+bool RasterTaskQueue::VerifyTaskSetSizes() const {
+ TaskSetSizes actual_task_set_sizes;
+ Item::Vector::const_iterator it = items.begin();
+ while (it != items.end()) {
+ actual_task_set_sizes += it->task_sets;
+ ++it;
+ }
+ return actual_task_set_sizes == task_set_sizes;
+}
+
void RasterTaskQueue::Swap(RasterTaskQueue* other) {
items.swap(other->items);
- std::swap(required_for_activation_count,
- other->required_for_activation_count);
+ std::swap(task_set_sizes, other->task_set_sizes);
}
void RasterTaskQueue::Reset() {
- required_for_activation_count = 0u;
items.clear();
+ task_set_sizes = TaskSetSizes();
}
} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698