diff options
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 |