| Index: cc/resources/worker_pool.h
|
| diff --git a/cc/resources/worker_pool.h b/cc/resources/worker_pool.h
|
| deleted file mode 100644
|
| index ee095d1336d723127794ee7c3336f21d715c04b8..0000000000000000000000000000000000000000
|
| --- a/cc/resources/worker_pool.h
|
| +++ /dev/null
|
| @@ -1,146 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CC_RESOURCES_WORKER_POOL_H_
|
| -#define CC_RESOURCES_WORKER_POOL_H_
|
| -
|
| -#include <deque>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/cancelable_callback.h"
|
| -#include "base/containers/scoped_ptr_hash_map.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "cc/base/cc_export.h"
|
| -
|
| -namespace cc {
|
| -namespace internal {
|
| -
|
| -class CC_EXPORT WorkerPoolTask
|
| - : public base::RefCountedThreadSafe<WorkerPoolTask> {
|
| - public:
|
| - virtual void RunOnWorkerThread(unsigned thread_index) = 0;
|
| - virtual void CompleteOnOriginThread() = 0;
|
| -
|
| - void DidSchedule();
|
| - void WillRun();
|
| - void DidRun();
|
| - void WillComplete();
|
| - void DidComplete();
|
| -
|
| - bool HasFinishedRunning() const;
|
| - bool HasCompleted() const;
|
| -
|
| - protected:
|
| - friend class base::RefCountedThreadSafe<WorkerPoolTask>;
|
| -
|
| - WorkerPoolTask();
|
| - virtual ~WorkerPoolTask();
|
| -
|
| - private:
|
| - bool did_schedule_;
|
| - bool did_run_;
|
| - bool did_complete_;
|
| -};
|
| -
|
| -class CC_EXPORT GraphNode {
|
| - public:
|
| - typedef std::vector<GraphNode*> Vector;
|
| -
|
| - GraphNode(internal::WorkerPoolTask* task, unsigned priority);
|
| - ~GraphNode();
|
| -
|
| - WorkerPoolTask* task() { return task_; }
|
| -
|
| - void add_dependent(GraphNode* dependent) {
|
| - DCHECK(dependent);
|
| - dependents_.push_back(dependent);
|
| - }
|
| - const Vector& dependents() const { return dependents_; }
|
| -
|
| - unsigned priority() const { return priority_; }
|
| -
|
| - unsigned num_dependencies() const { return num_dependencies_; }
|
| - void add_dependency() { ++num_dependencies_; }
|
| - void remove_dependency() {
|
| - DCHECK(num_dependencies_);
|
| - --num_dependencies_;
|
| - }
|
| -
|
| - private:
|
| - WorkerPoolTask* task_;
|
| - Vector dependents_;
|
| - unsigned priority_;
|
| - unsigned num_dependencies_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(GraphNode);
|
| -};
|
| -
|
| -} // namespace internal
|
| -} // namespace cc
|
| -
|
| -#if defined(COMPILER_GCC)
|
| -namespace BASE_HASH_NAMESPACE {
|
| -template <> struct hash<cc::internal::WorkerPoolTask*> {
|
| - size_t operator()(cc::internal::WorkerPoolTask* ptr) const {
|
| - return hash<size_t>()(reinterpret_cast<size_t>(ptr));
|
| - }
|
| -};
|
| -} // namespace BASE_HASH_NAMESPACE
|
| -#endif // COMPILER
|
| -
|
| -namespace cc {
|
| -
|
| -// A worker thread pool that runs tasks provided by task graph and
|
| -// guarantees completion of all pending tasks at shutdown.
|
| -class CC_EXPORT WorkerPool {
|
| - public:
|
| - virtual ~WorkerPool();
|
| -
|
| - // Tells the worker pool to shutdown and returns once all pending tasks have
|
| - // completed.
|
| - virtual void Shutdown();
|
| -
|
| - // Sets the number of threads to use for running raster tasks.
|
| - // Can only be called once prior to GetNumRasterThreads().
|
| - // Caller is responsible for correct ordering.
|
| - // TODO(reveman): Move this to RasterWorkerPool: crbug.com/331844
|
| - static void SetNumRasterThreads(int num_threads);
|
| -
|
| - // Gets the number of threads to use for running raster tasks.
|
| - // TODO(reveman): Move this to RasterWorkerPool: crbug.com/331844
|
| - static int GetNumRasterThreads();
|
| -
|
| - // A task graph contains a unique set of tasks with edges between
|
| - // dependencies pointing in the direction of the dependents. Each task
|
| - // need to be assigned a unique priority and a run count that matches
|
| - // the number of dependencies.
|
| - typedef base::ScopedPtrHashMap<internal::WorkerPoolTask*, internal::GraphNode>
|
| - GraphNodeMap;
|
| - typedef GraphNodeMap TaskGraph;
|
| - typedef std::vector<scoped_refptr<internal::WorkerPoolTask> > TaskVector;
|
| -
|
| - protected:
|
| - WorkerPool();
|
| -
|
| - // Schedule running of tasks in |graph|. Any previously scheduled tasks
|
| - // that are not already running will be canceled. Canceled tasks don't run
|
| - // but completion of them is still processed.
|
| - void SetTaskGraph(TaskGraph* graph);
|
| -
|
| - // Force a check for completed tasks.
|
| - void CheckForCompletedWorkerTasks();
|
| -
|
| - private:
|
| - void ProcessCompletedTasks(const TaskVector& completed_tasks);
|
| -
|
| - bool in_dispatch_completion_callbacks_;
|
| -};
|
| -
|
| -} // namespace cc
|
| -
|
| -#endif // CC_RESOURCES_WORKER_POOL_H_
|
|
|