diff options
Diffstat (limited to 'chromium/cc/resources/image_raster_worker_pool.cc')
-rw-r--r-- | chromium/cc/resources/image_raster_worker_pool.cc | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/chromium/cc/resources/image_raster_worker_pool.cc b/chromium/cc/resources/image_raster_worker_pool.cc index 408459c8f87..30add2ad2ea 100644 --- a/chromium/cc/resources/image_raster_worker_pool.cc +++ b/chromium/cc/resources/image_raster_worker_pool.cc @@ -8,7 +8,7 @@ #include "base/values.h" #include "cc/debug/traced_value.h" #include "cc/resources/resource.h" -#include "third_party/skia/include/core/SkDevice.h" +#include "third_party/skia/include/core/SkBitmapDevice.h" namespace cc { @@ -34,14 +34,10 @@ class ImageWorkerPoolTaskImpl : public internal::WorkerPoolTask { if (!buffer_) return; - SkBitmap bitmap; - bitmap.setConfig(SkBitmap::kARGB_8888_Config, - task_->resource()->size().width(), - task_->resource()->size().height(), - stride_); - bitmap.setPixels(buffer_); - SkDevice device(bitmap); - task_->RunOnWorkerThread(&device, thread_index); + task_->RunOnWorkerThread(thread_index, + buffer_, + task_->resource()->size(), + stride_); } virtual void CompleteOnOriginThread() OVERRIDE { reply_.Run(!HasFinishedRunning()); @@ -104,6 +100,8 @@ void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) { for (RasterTaskVector::const_iterator it = raster_tasks().begin(); it != raster_tasks().end(); ++it) { internal::RasterWorkerPoolTask* task = it->get(); + DCHECK(!task->HasCompleted()); + DCHECK(!task->WasCanceled()); TaskMap::iterator image_it = image_tasks_.find(task); if (image_it != image_tasks_.end()) { @@ -156,6 +154,11 @@ void ImageRasterWorkerPool::ScheduleTasks(RasterTask::Queue* queue) { "state", TracedValue::FromValue(StateAsValue().release())); } +ResourceFormat ImageRasterWorkerPool::GetResourceFormat() const { + // Only format supported by CHROMIUM_map_image + return RGBA_8888; +} + void ImageRasterWorkerPool::OnRasterTasksFinished() { DCHECK(raster_tasks_pending_); raster_tasks_pending_ = false; |