static scoped_ptr<RasterWorkerPool> Create(
ResourceProvider* resource_provider,
- ContextProvider* context_provider,
- unsigned texture_target) {
- return make_scoped_ptr<RasterWorkerPool>(new ImageRasterWorkerPool(
- resource_provider, context_provider, texture_target));
- }
+ unsigned texture_target);
// Overridden from RasterWorkerPool:
virtual void ScheduleTasks(RasterTask::Queue* queue) OVERRIDE;
virtual unsigned GetResourceTarget() const OVERRIDE;
virtual ResourceFormat GetResourceFormat() const OVERRIDE;
- virtual void OnRasterTasksFinished() OVERRIDE;
- virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE;
+ virtual void CheckForCompletedTasks() OVERRIDE;
+
+ // Overridden from internal::WorkerPoolTaskClient:
+ virtual SkCanvas* AcquireCanvasForRaster(internal::RasterWorkerPoolTask* task)
+ OVERRIDE;
+ virtual void OnRasterCompleted(internal::RasterWorkerPoolTask* task,
+ const PicturePileImpl::Analysis& analysis)
+ OVERRIDE;
+ virtual void OnImageDecodeCompleted(internal::WorkerPoolTask* task) OVERRIDE {
+ }
- private:
- ImageRasterWorkerPool(ResourceProvider* resource_provider,
- ContextProvider* context_provider,
+ protected:
+ ImageRasterWorkerPool(internal::TaskGraphRunner* task_graph_runner,
+ ResourceProvider* resource_provider,
unsigned texture_target);
- void OnRasterTaskCompleted(scoped_refptr<internal::RasterWorkerPoolTask> task,
- bool was_canceled);
+ private:
+ // Overridden from RasterWorkerPool:
+ virtual void OnRasterTasksFinished() OVERRIDE;
+ virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE;
scoped_ptr<base::Value> StateAsValue() const;
- static void CreateGraphNodeForImageTask(
- internal::WorkerPoolTask* image_task,
- const internal::Task::Vector& decode_tasks,
- unsigned priority,
- bool is_required_for_activation,
- internal::GraphNode* raster_required_for_activation_finished_node,
- internal::GraphNode* raster_finished_node,
- TaskGraph* graph);
-
const unsigned texture_target_;
- TaskMap image_tasks_;
+ RasterTask::Queue raster_tasks_;
bool raster_tasks_pending_;
bool raster_tasks_required_for_activation_pending_;
+ // Task graph used when scheduling tasks and vector used to gather
+ // completed tasks.
+ internal::TaskGraph graph_;
+ internal::Task::Vector completed_tasks_;
+
DISALLOW_COPY_AND_ASSIGN(ImageRasterWorkerPool);
};