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.
5 #ifndef CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_
6 #define CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_
8 #include "cc/resources/raster_worker_pool.h"
12 class CC_EXPORT ImageRasterWorkerPool : public RasterWorkerPool {
14 virtual ~ImageRasterWorkerPool();
16 static scoped_ptr<RasterWorkerPool> Create(
17 ResourceProvider* resource_provider,
18 unsigned texture_target);
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;
26 // Overridden from internal::WorkerPoolTaskClient:
27 virtual SkCanvas* AcquireCanvasForRaster(internal::RasterWorkerPoolTask* task)
29 virtual void OnRasterCompleted(internal::RasterWorkerPoolTask* task,
30 const PicturePileImpl::Analysis& analysis)
32 virtual void OnImageDecodeCompleted(internal::WorkerPoolTask* task) OVERRIDE {
36 ImageRasterWorkerPool(internal::TaskGraphRunner* task_graph_runner,
37 ResourceProvider* resource_provider,
38 unsigned texture_target);
41 // Overridden from RasterWorkerPool:
42 virtual void OnRasterTasksFinished() OVERRIDE;
43 virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE;
45 scoped_ptr<base::Value> StateAsValue() const;
47 const unsigned texture_target_;
49 RasterTask::Queue raster_tasks_;
51 bool raster_tasks_pending_;
52 bool raster_tasks_required_for_activation_pending_;
54 // Task graph used when scheduling tasks and vector used to gather
56 internal::TaskGraph graph_;
57 internal::Task::Vector completed_tasks_;
59 DISALLOW_COPY_AND_ASSIGN(ImageRasterWorkerPool);
64 #endif // CC_RESOURCES_IMAGE_RASTER_WORKER_POOL_H_