Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / cc / resources / image_raster_worker_pool.h
index 279ff46..2e11a22 100644 (file)
@@ -5,55 +5,66 @@
 #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);
 };