8bd3c517245bab1761ca58a8986c6fab43ad7ec1
[platform/framework/web/crosswalk.git] / src / cc / resources / image_raster_worker_pool.h
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_
6 #define CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_
7
8 #include "cc/resources/raster_worker_pool.h"
9
10 namespace cc {
11
12 class CC_EXPORT ImageRasterWorkerPool : public RasterWorkerPool {
13  public:
14   virtual ~ImageRasterWorkerPool();
15
16   static scoped_ptr<RasterWorkerPool> Create(
17       ResourceProvider* resource_provider,
18       unsigned texture_target);
19
20   // Overridden from RasterWorkerPool:
21   virtual void ScheduleTasks(RasterTask::Queue* queue) OVERRIDE;
22   virtual unsigned GetResourceTarget() const OVERRIDE;
23   virtual ResourceFormat GetResourceFormat() const OVERRIDE;
24   virtual void CheckForCompletedTasks() OVERRIDE;
25
26   // Overridden from internal::WorkerPoolTaskClient:
27   virtual SkCanvas* AcquireCanvasForRaster(internal::RasterWorkerPoolTask* task)
28       OVERRIDE;
29   virtual void OnRasterCompleted(internal::RasterWorkerPoolTask* task,
30                                  const PicturePileImpl::Analysis& analysis)
31       OVERRIDE;
32   virtual void OnImageDecodeCompleted(internal::WorkerPoolTask* task) OVERRIDE {
33   }
34
35  protected:
36   ImageRasterWorkerPool(internal::TaskGraphRunner* task_graph_runner,
37                         ResourceProvider* resource_provider,
38                         unsigned texture_target);
39
40  private:
41   // Overridden from RasterWorkerPool:
42   virtual void OnRasterTasksFinished() OVERRIDE;
43   virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE;
44
45   scoped_ptr<base::Value> StateAsValue() const;
46
47   const unsigned texture_target_;
48
49   RasterTask::Queue raster_tasks_;
50
51   bool raster_tasks_pending_;
52   bool raster_tasks_required_for_activation_pending_;
53
54   // Task graph used when scheduling tasks and vector used to gather
55   // completed tasks.
56   internal::TaskGraph graph_;
57   internal::Task::Vector completed_tasks_;
58
59   DISALLOW_COPY_AND_ASSIGN(ImageRasterWorkerPool);
60 };
61
62 }  // namespace cc
63
64 #endif  // CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_