Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3986)

Unified Diff: cc/tiles/gpu_image_decode_controller.cc

Issue 1866043006: cc: Remove ScheduleOnOriginThread() and CompleteOnOriginThread(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/tiles/gpu_image_decode_controller.cc
diff --git a/cc/tiles/gpu_image_decode_controller.cc b/cc/tiles/gpu_image_decode_controller.cc
index 91f0a33ed78f15ca110375ecea76d8f8a308d6ae..ce494063699f53f2a25094edf640e1b4e79ba175 100644
--- a/cc/tiles/gpu_image_decode_controller.cc
+++ b/cc/tiles/gpu_image_decode_controller.cc
@@ -67,6 +67,7 @@ class ImageDecodeTaskImpl : public ImageDecodeTask {
image_ref_(skia::SharePtr(draw_image.image())),
source_prepare_tiles_id_(source_prepare_tiles_id) {
DCHECK(!SkipImage(draw_image));
+ SetTaskTypeId(TASK_TYPE_IMAGE_DECODE);
}
// Overridden from Task:
@@ -76,16 +77,12 @@ class ImageDecodeTaskImpl : public ImageDecodeTask {
controller_->DecodeImage(image_);
}
- // Overridden from TileTask:
- void ScheduleOnOriginThread(TileTaskClient* client) override {}
- void CompleteOnOriginThread(TileTaskClient* client) override {
- controller_->DecodeTaskCompleted(image_);
- }
-
protected:
~ImageDecodeTaskImpl() override {}
private:
+ friend class GpuImageDecodeController;
+
GpuImageDecodeController* controller_;
DrawImage image_;
skia::RefPtr<const SkImage> image_ref_;
@@ -108,6 +105,7 @@ class ImageUploadTaskImpl : public ImageDecodeTask {
image_(draw_image),
image_ref_(skia::SharePtr(draw_image.image())),
source_prepare_tiles_id_(source_prepare_tiles_id) {
+ SetTaskTypeId(TASK_TYPE_IMAGE_UPLOAD);
DCHECK(!SkipImage(draw_image));
}
@@ -118,11 +116,6 @@ class ImageUploadTaskImpl : public ImageDecodeTask {
controller_->UploadImage(image_);
}
- void ScheduleOnOriginThread(TileTaskClient* client) override {}
- void CompleteOnOriginThread(TileTaskClient* client) override {
- controller_->UploadTaskCompleted(image_);
- }
-
// Override from ImageDecodeTask:
bool SupportsConcurrentExecution() const override { return false; }
@@ -130,6 +123,8 @@ class ImageUploadTaskImpl : public ImageDecodeTask {
~ImageUploadTaskImpl() override {}
private:
+ friend class GpuImageDecodeController;
+
GpuImageDecodeController* controller_;
DrawImage image_;
skia::RefPtr<const SkImage> image_ref_;
@@ -344,6 +339,32 @@ void GpuImageDecodeController::SetShouldAggressivelyFreeResources(
}
}
+void GpuImageDecodeController::ImageDecodeTaskCompleted(Task* task) {
+ base::AutoLock lock(lock_);
+ ImageDecodeTaskImpl* decode_task = static_cast<ImageDecodeTaskImpl*>(task);
+ DCHECK(decode_task);
+ // Decode task is complete, remove it from our list of pending tasks.
+ pending_image_decode_tasks_.erase(decode_task->image_.image()->uniqueID());
+
+ // While the decode task is active, we keep a ref on the decoded data.
+ // Release that ref now.
+ UnrefImageDecode(decode_task->image_);
+}
+
+void GpuImageDecodeController::ImageUploadTaskCompleted(Task* task) {
+ base::AutoLock lock(lock_);
+ ImageUploadTaskImpl* upload_task = static_cast<ImageUploadTaskImpl*>(task);
+ DCHECK(upload_task);
+ // Upload task is complete, remove it from our list of pending tasks.
+ pending_image_upload_tasks_.erase(upload_task->image_.image()->uniqueID());
+
+ // While the upload task is active, we keep a ref on both the image it will be
+ // populating, as well as the decode it needs to populate it. Release these
+ // refs now.
+ UnrefImageDecode(upload_task->image_);
+ UnrefImageInternal(upload_task->image_);
+}
+
void GpuImageDecodeController::DecodeImage(const DrawImage& draw_image) {
base::AutoLock lock(lock_);
auto found = image_data_.Peek(draw_image.image()->uniqueID());
@@ -361,30 +382,6 @@ void GpuImageDecodeController::UploadImage(const DrawImage& draw_image) {
UploadImageIfNecessary(draw_image, found->second.get());
}
-void GpuImageDecodeController::DecodeTaskCompleted(
- const DrawImage& draw_image) {
- base::AutoLock lock(lock_);
- // Decode task is complete, remove it from our list of pending tasks.
- pending_image_decode_tasks_.erase(draw_image.image()->uniqueID());
-
- // While the decode task is active, we keep a ref on the decoded data.
- // Release that ref now.
- UnrefImageDecode(draw_image);
-}
-
-void GpuImageDecodeController::UploadTaskCompleted(
- const DrawImage& draw_image) {
- base::AutoLock lock(lock_);
- // Upload task is complete, remove it from our list of pending tasks.
- pending_image_upload_tasks_.erase(draw_image.image()->uniqueID());
-
- // While the upload task is active, we keep a ref on both the image it will be
- // populating, as well as the decode it needs to populate it. Release these
- // refs now.
- UnrefImageDecode(draw_image);
- UnrefImageInternal(draw_image);
-}
-
// Checks if an existing image decode exists. If not, returns a task to produce
// the requested decode.
scoped_refptr<ImageDecodeTask>

Powered by Google App Engine
This is Rietveld 408576698