#ifndef CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_
#define CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_
-#include "cc/resources/raster_worker_pool.h"
-
+#include "base/memory/weak_ptr.h"
#include "base/values.h"
+#include "cc/resources/raster_worker_pool.h"
+#include "cc/resources/rasterizer.h"
namespace cc {
+class ResourceProvider;
-class CC_EXPORT ImageRasterWorkerPool : public RasterWorkerPool {
+class CC_EXPORT ImageRasterWorkerPool : public RasterWorkerPool,
+ public Rasterizer,
+ public RasterizerTaskClient {
public:
virtual ~ImageRasterWorkerPool();
static scoped_ptr<RasterWorkerPool> Create(
base::SequencedTaskRunner* task_runner,
- ResourceProvider* resource_provider,
- unsigned texture_target);
+ TaskGraphRunner* task_graph_runner,
+ ResourceProvider* resource_provider);
// Overridden from RasterWorkerPool:
+ virtual Rasterizer* AsRasterizer() OVERRIDE;
+
+ // Overridden from Rasterizer:
+ virtual void SetClient(RasterizerClient* client) OVERRIDE;
+ virtual void Shutdown() OVERRIDE;
virtual void ScheduleTasks(RasterTaskQueue* queue) OVERRIDE;
- virtual unsigned GetResourceTarget() const OVERRIDE;
- virtual ResourceFormat GetResourceFormat() const OVERRIDE;
virtual void CheckForCompletedTasks() OVERRIDE;
- // Overridden from internal::WorkerPoolTaskClient:
- virtual SkCanvas* AcquireCanvasForRaster(internal::WorkerPoolTask* task,
- const Resource* resource) OVERRIDE;
- virtual void ReleaseCanvasForRaster(internal::WorkerPoolTask* task,
- const Resource* resource) OVERRIDE;
+ // Overridden from RasterizerTaskClient:
+ virtual SkCanvas* AcquireCanvasForRaster(RasterTask* task) OVERRIDE;
+ virtual void ReleaseCanvasForRaster(RasterTask* task) OVERRIDE;
protected:
ImageRasterWorkerPool(base::SequencedTaskRunner* task_runner,
- internal::TaskGraphRunner* task_graph_runner,
- ResourceProvider* resource_provider,
- unsigned texture_target);
+ TaskGraphRunner* task_graph_runner,
+ ResourceProvider* resource_provider);
private:
- // Overridden from RasterWorkerPool:
- virtual void OnRasterTasksFinished() OVERRIDE;
- virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE;
-
+ void OnRasterFinished();
+ void OnRasterRequiredForActivationFinished();
scoped_ptr<base::Value> StateAsValue() const;
- const unsigned texture_target_;
+ scoped_refptr<base::SequencedTaskRunner> task_runner_;
+ TaskGraphRunner* task_graph_runner_;
+ const NamespaceToken namespace_token_;
+ RasterizerClient* client_;
+ ResourceProvider* resource_provider_;
bool raster_tasks_pending_;
bool raster_tasks_required_for_activation_pending_;
+ base::WeakPtrFactory<ImageRasterWorkerPool> raster_finished_weak_ptr_factory_;
+
+ scoped_refptr<RasterizerTask> raster_finished_task_;
+ scoped_refptr<RasterizerTask> raster_required_for_activation_finished_task_;
+
// Task graph used when scheduling tasks and vector used to gather
// completed tasks.
- internal::TaskGraph graph_;
- internal::Task::Vector completed_tasks_;
+ TaskGraph graph_;
+ Task::Vector completed_tasks_;
DISALLOW_COPY_AND_ASSIGN(ImageRasterWorkerPool);
};