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

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, 7 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 b7dbd55f116d1900fca133a64d710abf086376a3..69a3327e385edfd4b7b068563bb4316d578efeb7 100644
--- a/cc/tiles/gpu_image_decode_controller.cc
+++ b/cc/tiles/gpu_image_decode_controller.cc
@@ -62,7 +62,7 @@ class ImageDecodeTaskImpl : public TileTask {
ImageDecodeTaskImpl(GpuImageDecodeController* controller,
const DrawImage& draw_image,
const ImageDecodeController::TracingInfo& tracing_info)
- : TileTask(true),
+ : TileTask(TileTask::Type::IMAGE_DECODE, true),
controller_(controller),
image_(draw_image),
tracing_info_(tracing_info) {
@@ -76,16 +76,12 @@ class ImageDecodeTaskImpl : public TileTask {
controller_->DecodeImage(image_);
}
- // Overridden from TileTask:
- void ScheduleOnOriginThread(RasterBufferProvider* provider) override {}
- void CompleteOnOriginThread(RasterBufferProvider* provider) override {
- controller_->DecodeTaskCompleted(image_);
- }
-
protected:
~ImageDecodeTaskImpl() override {}
private:
+ friend class GpuImageDecodeController;
+
GpuImageDecodeController* controller_;
DrawImage image_;
const ImageDecodeController::TracingInfo tracing_info_;
@@ -102,7 +98,7 @@ class ImageUploadTaskImpl : public TileTask {
const DrawImage& draw_image,
scoped_refptr<TileTask> decode_dependency,
const ImageDecodeController::TracingInfo& tracing_info)
- : TileTask(false),
+ : TileTask(TileTask::Type::IMAGE_UPLOAD, false),
controller_(controller),
image_(draw_image),
tracing_info_(tracing_info) {
@@ -120,15 +116,12 @@ class ImageUploadTaskImpl : public TileTask {
controller_->UploadImage(image_);
}
- void ScheduleOnOriginThread(RasterBufferProvider* provider) override {}
- void CompleteOnOriginThread(RasterBufferProvider* provider) override {
- controller_->UploadTaskCompleted(image_);
- }
-
protected:
~ImageUploadTaskImpl() override {}
private:
+ friend class GpuImageDecodeController;
+
GpuImageDecodeController* controller_;
DrawImage image_;
const ImageDecodeController::TracingInfo tracing_info_;
@@ -367,6 +360,32 @@ void GpuImageDecodeController::SetShouldAggressivelyFreeResources(
}
}
+void GpuImageDecodeController::OnImageDecodeTaskCompleted(TileTask* 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::OnImageUploadTaskCompleted(TileTask* 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_);
+}
+
bool GpuImageDecodeController::OnMemoryDump(
const base::trace_event::MemoryDumpArgs& args,
base::trace_event::ProcessMemoryDump* pmd) {
@@ -442,30 +461,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<TileTask> GpuImageDecodeController::GetImageDecodeTaskAndRef(

Powered by Google App Engine
This is Rietveld 408576698