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

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: fix flaky unit tests 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 c2dba6c974adc701c03fc7cb5335904001be5fc3..b4e96f62b063a4b50a8d4a6b82d1c24c1731a1d5 100644
--- a/cc/resources/worker_pool.cc
+++ b/cc/resources/worker_pool.cc
@@ -64,6 +64,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
@@ -90,8 +99,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.
if (a->priority() != b->priority())
return a->priority() > b->priority();
@@ -125,8 +134,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_;
@@ -216,11 +225,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();
}
}
@@ -243,7 +254,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());
@@ -336,11 +347,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();
// Task is ready if it has no dependencies. Add it to
@@ -359,15 +372,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),
« 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