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 93d017f186fa0dd34000ca815ef3f7ff637cdc17..96f1697d1270276750888014a0f673dfaf59e781 100644 |
--- a/cc/tiles/software_image_decode_controller.cc |
+++ b/cc/tiles/software_image_decode_controller.cc |
@@ -36,7 +36,7 @@ class AutoRemoveKeyFromTaskMap { |
public: |
AutoRemoveKeyFromTaskMap( |
std::unordered_map<SoftwareImageDecodeController::ImageKey, |
- scoped_refptr<ImageDecodeTask>, |
+ scoped_refptr<Task>, |
SoftwareImageDecodeController::ImageKeyHash>* task_map, |
const SoftwareImageDecodeController::ImageKey& key) |
: task_map_(task_map), key_(key) {} |
@@ -44,12 +44,12 @@ class AutoRemoveKeyFromTaskMap { |
private: |
std::unordered_map<SoftwareImageDecodeController::ImageKey, |
- scoped_refptr<ImageDecodeTask>, |
+ scoped_refptr<Task>, |
SoftwareImageDecodeController::ImageKeyHash>* task_map_; |
SoftwareImageDecodeController::ImageKey key_; |
}; |
-class ImageDecodeTaskImpl : public ImageDecodeTask { |
+class ImageDecodeTaskImpl : public Task { |
public: |
ImageDecodeTaskImpl(SoftwareImageDecodeController* controller, |
const SoftwareImageDecodeController::ImageKey& image_key, |
@@ -62,6 +62,10 @@ class ImageDecodeTaskImpl : public ImageDecodeTask { |
source_prepare_tiles_id_(source_prepare_tiles_id) {} |
// Overridden from Task: |
+ void ScheduleOnOriginThread() override {} |
+ void CompleteOnOriginThread() override { |
+ controller_->RemovePendingTask(image_key_); |
+ } |
void RunOnWorkerThread() override { |
TRACE_EVENT2("cc", "ImageDecodeTaskImpl::RunOnWorkerThread", "mode", |
"software", "source_prepare_tiles_id", |
@@ -71,12 +75,6 @@ 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 {} |
@@ -157,7 +155,7 @@ SoftwareImageDecodeController::~SoftwareImageDecodeController() { |
bool SoftwareImageDecodeController::GetTaskForImageAndRef( |
const DrawImage& image, |
uint64_t prepare_tiles_id, |
- scoped_refptr<ImageDecodeTask>* task) { |
+ scoped_refptr<Task>* task) { |
// If the image already exists or if we're going to create a task for it, then |
// we'll likely need to ref this image (the exception is if we're prerolling |
// the image only). That means the image is or will be in the cache. When the |
@@ -184,7 +182,7 @@ bool SoftwareImageDecodeController::GetTaskForImageAndRef( |
if (!CanHandleImage(key)) { |
base::AutoLock lock(lock_); |
if (prerolled_images_.count(key.image_id()) == 0) { |
- scoped_refptr<ImageDecodeTask>& existing_task = pending_image_tasks_[key]; |
+ scoped_refptr<Task>& existing_task = pending_image_tasks_[key]; |
if (!existing_task) { |
existing_task = make_scoped_refptr( |
new ImageDecodeTaskImpl(this, key, image, prepare_tiles_id)); |
@@ -217,7 +215,7 @@ bool SoftwareImageDecodeController::GetTaskForImageAndRef( |
} |
// If the task exists, return it. |
- scoped_refptr<ImageDecodeTask>& existing_task = pending_image_tasks_[key]; |
+ scoped_refptr<Task>& existing_task = pending_image_tasks_[key]; |
if (existing_task) { |
RefImage(key); |
*task = existing_task; |