diff options
author | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-03 17:09:47 +0000 |
---|---|---|
committer | reveman@chromium.org <reveman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-03 17:09:47 +0000 |
commit | b12d736dae59ce594936459ab95b3d463e6baf71 (patch) | |
tree | 3f5c19478f4a98c2981820a8184a8dd247f013f7 /cc/resources/raster_worker_pool.h | |
parent | bacfaa28ac7195752fd21df1995383a20a1c5e1e (diff) | |
download | chromium_src-b12d736dae59ce594936459ab95b3d463e6baf71.zip chromium_src-b12d736dae59ce594936459ab95b3d463e6baf71.tar.gz chromium_src-b12d736dae59ce594936459ab95b3d463e6baf71.tar.bz2 |
Re-land: cc: Add raster finished signals to RasterWorkerPool.
This adds to important signals to the RasterWorkerPoolClient
interface. Each signal is generated as a result of calling
ScheduleTasks() and the signals always reflect the state of the
last call to ScheduleTasks().
BUG=253508,254135,252787
TEST=cc_unittests --gtest_filter=TileManagerTest.*
Review URL: https://chromiumcodereview.appspot.com/17351017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209995 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/resources/raster_worker_pool.h')
-rw-r--r-- | cc/resources/raster_worker_pool.h | 59 |
1 files changed, 36 insertions, 23 deletions
diff --git a/cc/resources/raster_worker_pool.h b/cc/resources/raster_worker_pool.h index 3101376..0ad519e 100644 --- a/cc/resources/raster_worker_pool.h +++ b/cc/resources/raster_worker_pool.h @@ -105,6 +105,8 @@ struct RasterTaskMetadata { class CC_EXPORT RasterWorkerPoolClient { public: virtual bool ShouldForceTasksRequiredForActivationToComplete() const = 0; + virtual void DidFinishedRunningTasks() = 0; + virtual void DidFinishedRunningTasksRequiredForActivation() = 0; protected: virtual ~RasterWorkerPoolClient() {} @@ -230,31 +232,12 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool { typedef base::hash_map<TaskMapKey, scoped_refptr<internal::WorkerPoolTask> > TaskMap; - class CC_EXPORT RasterTaskGraph { - public: - RasterTaskGraph(); - ~RasterTaskGraph(); - - void InsertRasterTask(internal::WorkerPoolTask* raster_task, - const TaskVector& decode_tasks); - - private: - friend class RasterWorkerPool; - - TaskGraph graph_; - scoped_refptr<internal::WorkerPoolTask> raster_finished_task_; - scoped_ptr<GraphNode> raster_finished_node_; - unsigned next_priority_; - - DISALLOW_COPY_AND_ASSIGN(RasterTaskGraph); - }; - RasterWorkerPool(ResourceProvider* resource_provider, size_t num_threads); - virtual void OnRasterTasksFinished() {} + virtual void OnRasterTasksFinished() = 0; + virtual void OnRasterTasksRequiredForActivationFinished() = 0; void SetRasterTasks(RasterTask::Queue* queue); - void SetRasterTaskGraph(RasterTaskGraph* graph); bool IsRasterTaskRequiredForActivation( internal::RasterWorkerPoolTask* task) const; @@ -263,9 +246,38 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool { const RasterTask::Queue::TaskVector& raster_tasks() const { return raster_tasks_; } + void set_raster_finished_task( + scoped_refptr<internal::WorkerPoolTask> raster_finished_task) { + raster_finished_task_ = raster_finished_task; + } + void set_raster_required_for_activation_finished_task( + scoped_refptr<internal::WorkerPoolTask> + raster_required_for_activation_finished_task) { + raster_required_for_activation_finished_task_ = + raster_required_for_activation_finished_task; + } + + scoped_refptr<internal::WorkerPoolTask> CreateRasterFinishedTask(); + scoped_refptr<internal::WorkerPoolTask> + CreateRasterRequiredForActivationFinishedTask(); + + scoped_ptr<base::Value> ScheduledStateAsValue() const; + + static internal::GraphNode* CreateGraphNodeForTask( + internal::WorkerPoolTask* task, + unsigned priority, + TaskGraph* graph); + + static internal::GraphNode* CreateGraphNodeForRasterTask( + internal::WorkerPoolTask* raster_task, + const TaskVector& decode_tasks, + unsigned priority, + TaskGraph* graph); private: - void OnRasterFinished(int64 schedule_raster_tasks_count); + void OnRasterFinished(const internal::WorkerPoolTask* source); + void OnRasterRequiredForActivationFinished( + const internal::WorkerPoolTask* source); RasterWorkerPoolClient* client_; ResourceProvider* resource_provider_; @@ -274,7 +286,8 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool { base::WeakPtrFactory<RasterWorkerPool> weak_ptr_factory_; scoped_refptr<internal::WorkerPoolTask> raster_finished_task_; - int64 schedule_raster_tasks_count_; + scoped_refptr<internal::WorkerPoolTask> + raster_required_for_activation_finished_task_; }; } // namespace cc |