Chromium Code Reviews| Index: cc/resources/pixel_buffer_raster_worker_pool.h |
| diff --git a/cc/resources/pixel_buffer_raster_worker_pool.h b/cc/resources/pixel_buffer_raster_worker_pool.h |
| index fe34d1b0268faa8c16d5604be88933e25ec5170e..134c16191ccaa48e0c6a7c4cd23763121b92821a 100644 |
| --- a/cc/resources/pixel_buffer_raster_worker_pool.h |
| +++ b/cc/resources/pixel_buffer_raster_worker_pool.h |
| @@ -5,22 +5,10 @@ |
| #ifndef CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_ |
| #define CC_RESOURCES_PIXEL_BUFFER_RASTER_WORKER_POOL_H_ |
| -#include <deque> |
| +#include <vector> |
| -#include "base/containers/hash_tables.h" |
| #include "cc/resources/raster_worker_pool.h" |
| -#if defined(COMPILER_GCC) |
| -namespace BASE_HASH_NAMESPACE { |
| -template <> |
| -struct hash<cc::internal::WorkerPoolTask*> { |
| - size_t operator()(cc::internal::WorkerPoolTask* ptr) const { |
| - return hash<size_t>()(reinterpret_cast<size_t>(ptr)); |
| - } |
| -}; |
| -} // namespace BASE_HASH_NAMESPACE |
| -#endif // COMPILER |
| - |
| namespace cc { |
| class CC_EXPORT PixelBufferRasterWorkerPool : public RasterWorkerPool { |
| @@ -51,8 +39,27 @@ class CC_EXPORT PixelBufferRasterWorkerPool : public RasterWorkerPool { |
| private: |
| struct RasterTaskState { |
| - RasterTaskState() |
| - : type(UNSCHEDULED), resource(NULL), required_for_activation(false) {} |
| + class TaskComparator { |
|
vmpstr
2014/02/21 18:39:41
I know this is consistent with other classes in ta
reveman
2014/02/22 11:32:01
Maybe IsTask or IsTaskComparator would be better a
vmpstr
2014/02/24 17:37:58
IsTask or IsTaskComparator or IsTaskClosure or som
|
| + public: |
| + explicit TaskComparator(const internal::WorkerPoolTask* task) |
| + : task_(task) {} |
| + |
| + bool operator()(const RasterTaskState& state) const { |
| + return state.task == task_; |
| + } |
| + |
| + private: |
| + const internal::WorkerPoolTask* task_; |
| + }; |
| + |
| + typedef std::vector<RasterTaskState> Vector; |
| + |
| + RasterTaskState(internal::WorkerPoolTask* task, |
| + bool required_for_activation) |
| + : type(UNSCHEDULED), |
| + task(task), |
| + resource(NULL), |
| + required_for_activation(required_for_activation) {} |
| RasterTaskState& set_completed() { |
| type = COMPLETED; |
| @@ -64,11 +71,10 @@ class CC_EXPORT PixelBufferRasterWorkerPool : public RasterWorkerPool { |
| } |
| enum { UNSCHEDULED, SCHEDULED, UPLOADING, COMPLETED } type; |
| + internal::WorkerPoolTask* task; |
| const Resource* resource; |
| bool required_for_activation; |
| }; |
| - typedef internal::WorkerPoolTask* RasterTaskMapKey; |
| - typedef base::hash_map<RasterTaskMapKey, RasterTaskState> RasterTaskStateMap; |
| // Overridden from RasterWorkerPool: |
| virtual void OnRasterTasksFinished() OVERRIDE; |
| @@ -92,10 +98,11 @@ class CC_EXPORT PixelBufferRasterWorkerPool : public RasterWorkerPool { |
| bool shutdown_; |
| RasterTaskQueue raster_tasks_; |
| - RasterTaskStateMap raster_task_states_; |
| + RasterTaskState::Vector raster_task_states_; |
| + RasterTaskState::Vector recycled_raster_task_states_; |
| TaskDeque raster_tasks_with_pending_upload_; |
| - TaskDeque completed_raster_tasks_; |
| - TaskDeque completed_image_decode_tasks_; |
| + TaskVector completed_raster_tasks_; |
| + TaskVector completed_image_decode_tasks_; |
| size_t scheduled_raster_task_count_; |
| size_t raster_tasks_required_for_activation_count_; |