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

Unified Diff: cc/resources/worker_pool.cc

Issue 17351017: Re-land: cc: Add raster finished signals to RasterWorkerPool. (Closed) Base URL: http://git.chromium.org/chromium/src.git@new-graph-build
Patch Set: rebase 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
Index: cc/resources/worker_pool.cc
diff --git a/cc/resources/worker_pool.cc b/cc/resources/worker_pool.cc
index 90e30328cec071092fd60976e27c04aff408a3b3..c1342d157e89450566811231d0e06a9a7e3611bc 100644
--- a/cc/resources/worker_pool.cc
+++ b/cc/resources/worker_pool.cc
@@ -69,6 +69,15 @@ bool WorkerPoolTask::HasCompleted() const {
return did_complete_;
}
+GraphNode::GraphNode(internal::WorkerPoolTask* task, unsigned priority)
+ : task_(task),
+ priority_(priority),
+ num_dependencies_(0) {
+}
+
+GraphNode::~GraphNode() {
+}
+
} // namespace internal
// Internal to the worker pool. Any data or logic that needs to be
@@ -95,8 +104,8 @@ class WorkerPool::Inner : public base::DelegateSimpleThread::Delegate {
private:
class PriorityComparator {
public:
- bool operator()(const GraphNode* a,
- const GraphNode* b) {
+ bool operator()(const internal::GraphNode* a,
+ const internal::GraphNode* b) {
// In this system, numerically lower priority is run first.
return a->priority() > b->priority();
}
@@ -126,8 +135,8 @@ class WorkerPool::Inner : public base::DelegateSimpleThread::Delegate {
GraphNodeMap pending_tasks_;
// Ordered set of tasks that are ready to run.
- typedef std::priority_queue<GraphNode*,
- std::vector<GraphNode*>,
+ typedef std::priority_queue<internal::GraphNode*,
+ std::vector<internal::GraphNode*>,
PriorityComparator> TaskQueue;
TaskQueue ready_to_run_tasks_;
@@ -214,11 +223,13 @@ void WorkerPool::Inner::SetTaskGraph(TaskGraph* graph) {
it != completed_tasks_.end(); ++it) {
internal::WorkerPoolTask* task = it->get();
- scoped_ptr<GraphNode> node = new_pending_tasks.take_and_erase(task);
+ scoped_ptr<internal::GraphNode> node = new_pending_tasks.take_and_erase(
+ task);
if (node) {
- for (GraphNode::Vector::const_iterator it = node->dependents().begin();
+ for (internal::GraphNode::Vector::const_iterator it =
+ node->dependents().begin();
it != node->dependents().end(); ++it) {
- GraphNode* dependent_node = *it;
+ internal::GraphNode* dependent_node = *it;
dependent_node->remove_dependency();
}
}
@@ -251,7 +262,7 @@ void WorkerPool::Inner::SetTaskGraph(TaskGraph* graph) {
it != new_pending_tasks.end(); ++it) {
internal::WorkerPoolTask* task = it->first;
DCHECK(task);
- GraphNode* node = it->second;
+ internal::GraphNode* node = it->second;
// Completed tasks should not exist in |new_pending_tasks|.
DCHECK(!task->HasFinishedRunning());
@@ -338,11 +349,13 @@ void WorkerPool::Inner::Run() {
// Now iterate over all dependents to remove dependency and check
// if they are ready to run.
- scoped_ptr<GraphNode> node = running_tasks_.take_and_erase(task.get());
+ scoped_ptr<internal::GraphNode> node = running_tasks_.take_and_erase(
+ task.get());
if (node) {
- for (GraphNode::Vector::const_iterator it = node->dependents().begin();
+ for (internal::GraphNode::Vector::const_iterator it =
+ node->dependents().begin();
it != node->dependents().end(); ++it) {
- GraphNode* dependent_node = *it;
+ internal::GraphNode* dependent_node = *it;
dependent_node->remove_dependency();
// Dependent is not ready unless number of dependencies are 0.
@@ -363,15 +376,6 @@ void WorkerPool::Inner::Run() {
has_ready_to_run_tasks_cv_.Signal();
}
-WorkerPool::GraphNode::GraphNode()
- : task_(NULL),
- priority_(0),
- num_dependencies_(0) {
-}
-
-WorkerPool::GraphNode::~GraphNode() {
-}
-
WorkerPool::WorkerPool(size_t num_threads,
const std::string& thread_name_prefix)
: in_dispatch_completion_callbacks_(false),

Powered by Google App Engine
This is Rietveld 408576698