1 // Copyright 2014 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_DIRECT_RASTER_WORKER_POOL_H_
6 #define CC_RESOURCES_DIRECT_RASTER_WORKER_POOL_H_
8 #include "cc/resources/raster_worker_pool.h"
12 class CC_EXPORT DirectRasterWorkerPool : public RasterWorkerPool {
14 virtual ~DirectRasterWorkerPool();
16 static scoped_ptr<RasterWorkerPool> Create(
17 ResourceProvider* resource_provider,
18 ContextProvider* context_provider);
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 DirectRasterWorkerPool(ResourceProvider* resource_provider,
37 ContextProvider* context_provider);
40 // Overridden from RasterWorkerPool:
41 virtual void OnRasterTasksFinished() OVERRIDE;
42 virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE;
44 void ScheduleRunTasksOnOriginThread();
45 void RunTasksOnOriginThread();
47 ContextProvider* context_provider_;
49 bool run_tasks_on_origin_thread_pending_;
51 RasterTask::Queue raster_tasks_;
53 bool raster_tasks_pending_;
54 bool raster_tasks_required_for_activation_pending_;
56 internal::WorkerPoolTask::Vector completed_tasks_;
58 base::WeakPtrFactory<DirectRasterWorkerPool> weak_factory_;
60 DISALLOW_COPY_AND_ASSIGN(DirectRasterWorkerPool);
65 #endif // CC_RESOURCES_DIRECT_RASTER_WORKER_POOL_H_