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

Unified Diff: cc/resources/worker_pool.cc

Issue 17244003: cc: Move task graph construction to RasterWorkerPool classes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@wp-run-count
Patch Set: add missing CC_EXPORT Created 7 years, 6 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
« no previous file with comments | « cc/resources/worker_pool.h ('k') | cc/resources/worker_pool_perftest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/worker_pool.cc
diff --git a/cc/resources/worker_pool.cc b/cc/resources/worker_pool.cc
index 09aa1aa26d4665d67effaeedea6ec98a35c78dd4..9b7e824a4d458e89d0c444097b8744001846286f 100644
--- a/cc/resources/worker_pool.cc
+++ b/cc/resources/worker_pool.cc
@@ -29,13 +29,6 @@ WorkerPoolTask::WorkerPoolTask()
did_complete_(false) {
}
-WorkerPoolTask::WorkerPoolTask(TaskVector* dependencies)
- : did_schedule_(false),
- did_run_(false),
- did_complete_(false) {
- dependencies_.swap(*dependencies);
-}
-
WorkerPoolTask::~WorkerPoolTask() {
DCHECK_EQ(did_schedule_, did_complete_);
DCHECK(!did_run_ || did_schedule_);
@@ -242,6 +235,7 @@ void WorkerPool::Inner::SetTaskGraph(TaskGraph* graph) {
for (GraphNodeMap::iterator it = new_pending_tasks.begin();
it != new_pending_tasks.end(); ++it) {
internal::WorkerPoolTask* task = it->first;
+ DCHECK(task);
GraphNode* node = it->second;
// Completed tasks should not exist in |new_pending_tasks|.
@@ -359,8 +353,8 @@ void WorkerPool::Inner::Run() {
has_ready_to_run_tasks_cv_.Signal();
}
-WorkerPool::GraphNode::GraphNode(internal::WorkerPoolTask* task)
- : task_(task),
+WorkerPool::GraphNode::GraphNode()
+ : task_(NULL),
priority_(0),
num_dependencies_(0) {
}
@@ -414,59 +408,12 @@ void WorkerPool::DispatchCompletionCallbacks(TaskDeque* completed_tasks) {
}
void WorkerPool::SetTaskGraph(TaskGraph* graph) {
- TRACE_EVENT0("cc", "WorkerPool::SetTaskGraph");
+ TRACE_EVENT1("cc", "WorkerPool::SetTaskGraph",
+ "num_tasks", graph->size());
DCHECK(!in_dispatch_completion_callbacks_);
inner_->SetTaskGraph(graph);
}
-// static
-unsigned WorkerPool::BuildTaskGraphRecursive(
- internal::WorkerPoolTask* task,
- GraphNode* dependent,
- unsigned priority,
- TaskGraph* graph) {
- GraphNodeMap::iterator it = graph->find(task);
- if (it != graph->end()) {
- GraphNode* node = it->second;
- node->add_dependent(dependent);
- return priority;
- }
-
- scoped_ptr<GraphNode> node(new GraphNode(task));
-
- typedef internal::WorkerPoolTask::TaskVector TaskVector;
- for (TaskVector::iterator dependency_it = task->dependencies().begin();
- dependency_it != task->dependencies().end(); ++dependency_it) {
- internal::WorkerPoolTask* dependency = dependency_it->get();
- // Skip sub-tree if task has already completed.
- if (dependency->HasCompleted())
- continue;
-
- node->add_dependency();
-
- priority = BuildTaskGraphRecursive(dependency,
- node.get(),
- priority,
- graph);
- }
-
- node->set_priority(priority);
- if (dependent)
- node->add_dependent(dependent);
-
- graph->set(task, node.Pass());
-
- return priority + 1;
-}
-
-// static
-void WorkerPool::BuildTaskGraph(
- internal::WorkerPoolTask* root, TaskGraph* graph) {
- const unsigned kBasePriority = 0u;
- if (root && !root->HasCompleted())
- BuildTaskGraphRecursive(root, NULL, kBasePriority, graph);
-}
-
} // namespace cc
« no previous file with comments | « cc/resources/worker_pool.h ('k') | cc/resources/worker_pool_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698