Index: cc/resources/raster_worker_pool.h |
diff --git a/cc/resources/raster_worker_pool.h b/cc/resources/raster_worker_pool.h |
index 972cbdccb47e189175ac5f1a36604ecb9a2dd18a..4baa83552fede3e652e7219f740f0b0fa3f7cd86 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() {} |
@@ -231,32 +233,14 @@ class CC_EXPORT RasterWorkerPool : public WorkerPool { |
typedef internal::RasterWorkerPoolTask* TaskMapKey; |
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); |
- }; |
+ typedef std::vector<GraphNode*> NodeVector; |
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; |
@@ -265,9 +249,36 @@ 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(); |
+ |
+ static GraphNode* CreateGraphNodeForTask( |
+ internal::WorkerPoolTask* task, |
+ unsigned priority, |
+ TaskGraph* graph); |
+ |
+ static 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_; |
@@ -276,7 +287,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 |