Index: cc/tiles/software_image_decode_controller.cc |
diff --git a/cc/tiles/software_image_decode_controller.cc b/cc/tiles/software_image_decode_controller.cc |
index 8ed5a0eb4e33fdaf94e30d8daedb76c8e30019b5..6c8bbd7a2720e586c4a1a6cb073718f7adc4a0bd 100644 |
--- a/cc/tiles/software_image_decode_controller.cc |
+++ b/cc/tiles/software_image_decode_controller.cc |
@@ -64,7 +64,9 @@ class ImageDecodeTaskImpl : public ImageDecodeTask { |
image_key_(image_key), |
image_(image), |
image_ref_(skia::SharePtr(image.image())), |
- source_prepare_tiles_id_(source_prepare_tiles_id) {} |
+ source_prepare_tiles_id_(source_prepare_tiles_id) { |
+ SetTaskTypeId(TASK_TYPE_IMAGE_DECODE); |
+ } |
// Overridden from Task: |
void RunOnWorkerThread() override { |
@@ -76,22 +78,17 @@ class ImageDecodeTaskImpl : public ImageDecodeTask { |
controller_->DecodeImage(image_key_, image_); |
} |
- // Overridden from TileTask: |
- void ScheduleOnOriginThread(TileTaskClient* client) override {} |
- void CompleteOnOriginThread(TileTaskClient* client) override { |
- controller_->RemovePendingTask(image_key_); |
- } |
- |
protected: |
~ImageDecodeTaskImpl() override {} |
- private: |
+ public: |
SoftwareImageDecodeController* controller_; |
SoftwareImageDecodeController::ImageKey image_key_; |
DrawImage image_; |
skia::RefPtr<const SkImage> image_ref_; |
uint64_t source_prepare_tiles_id_; |
+ private: |
DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl); |
}; |
@@ -688,6 +685,12 @@ void SoftwareImageDecodeController::ReduceCacheUsage() { |
} |
} |
+void SoftwareImageDecodeController::ImageDecodeTaskCompleted(Task* task) { |
+ ImageDecodeTaskImpl* decode_task = static_cast<ImageDecodeTaskImpl*>(task); |
+ DCHECK(decode_task); |
+ RemovePendingTask(decode_task->image_key_); |
+} |
+ |
void SoftwareImageDecodeController::RemovePendingTask(const ImageKey& key) { |
base::AutoLock lock(lock_); |
pending_image_tasks_.erase(key); |