Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / cc / resources / direct_raster_worker_pool.h
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.
4
5 #ifndef CC_RESOURCES_DIRECT_RASTER_WORKER_POOL_H_
6 #define CC_RESOURCES_DIRECT_RASTER_WORKER_POOL_H_
7
8 #include "cc/resources/raster_worker_pool.h"
9
10 namespace cc {
11
12 class CC_EXPORT DirectRasterWorkerPool : public RasterWorkerPool {
13  public:
14   virtual ~DirectRasterWorkerPool();
15
16   static scoped_ptr<RasterWorkerPool> Create(
17       ResourceProvider* resource_provider,
18       ContextProvider* context_provider);
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   DirectRasterWorkerPool(ResourceProvider* resource_provider,
37                          ContextProvider* context_provider);
38
39  private:
40   // Overridden from RasterWorkerPool:
41   virtual void OnRasterTasksFinished() OVERRIDE;
42   virtual void OnRasterTasksRequiredForActivationFinished() OVERRIDE;
43
44   void ScheduleRunTasksOnOriginThread();
45   void RunTasksOnOriginThread();
46
47   ContextProvider* context_provider_;
48
49   bool run_tasks_on_origin_thread_pending_;
50
51   RasterTask::Queue raster_tasks_;
52
53   bool raster_tasks_pending_;
54   bool raster_tasks_required_for_activation_pending_;
55
56   internal::WorkerPoolTask::Vector completed_tasks_;
57
58   base::WeakPtrFactory<DirectRasterWorkerPool> weak_factory_;
59
60   DISALLOW_COPY_AND_ASSIGN(DirectRasterWorkerPool);
61 };
62
63 }  // namespace cc
64
65 #endif  // CC_RESOURCES_DIRECT_RASTER_WORKER_POOL_H_