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

Side by Side 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: wip - fixed few unit tests 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/tiles/gpu_image_decode_controller.h" 5 #include "cc/tiles/gpu_image_decode_controller.h"
6 6
7 #include "cc/debug/devtools_instrumentation.h" 7 #include "cc/debug/devtools_instrumentation.h"
8 #include "cc/raster/tile_task_runner.h" 8 #include "cc/raster/tile_task_runner.h"
9 #include "skia/ext/refptr.h" 9 #include "skia/ext/refptr.h"
10 10
11 namespace cc { 11 namespace cc {
12 12
13 class ImageDecodeTaskImpl : public ImageDecodeTask { 13 class ImageDecodeTaskImpl : public ImageDecodeTask {
14 public: 14 public:
15 ImageDecodeTaskImpl(GpuImageDecodeController* controller, 15 ImageDecodeTaskImpl(GpuImageDecodeController* controller,
16 const DrawImage& image, 16 const DrawImage& image,
17 uint64_t source_prepare_tiles_id) 17 uint64_t source_prepare_tiles_id)
18 : controller_(controller), 18 : controller_(controller),
19 image_(image), 19 image_(image),
20 image_ref_(skia::SharePtr(image.image())), 20 image_ref_(skia::SharePtr(image.image())),
21 source_prepare_tiles_id_(source_prepare_tiles_id) {} 21 source_prepare_tiles_id_(source_prepare_tiles_id) {
22 SetTaskTypeId(kImageDecodeTaskTypeId);
23 }
22 24
23 // Overridden from Task: 25 // Overridden from Task:
24 void RunOnWorkerThread() override { 26 void RunOnWorkerThread() override {
25 TRACE_EVENT2("cc", "ImageDecodeTaskImpl::RunOnWorkerThread", "mode", "gpu", 27 TRACE_EVENT2("cc", "ImageDecodeTaskImpl::RunOnWorkerThread", "mode", "gpu",
26 "source_prepare_tiles_id", source_prepare_tiles_id_); 28 "source_prepare_tiles_id", source_prepare_tiles_id_);
27 devtools_instrumentation::ScopedImageDecodeTask image_decode_task( 29 devtools_instrumentation::ScopedImageDecodeTask image_decode_task(
28 image_ref_.get()); 30 image_ref_.get());
29 controller_->DecodeImage(image_); 31 controller_->DecodeImage(image_);
30 } 32 }
31 33
32 // Overridden from TileTask:
33 void ScheduleOnOriginThread(TileTaskClient* client) override {}
34 void CompleteOnOriginThread(TileTaskClient* client) override {
35 controller_->RemovePendingTaskForImage(image_);
36 }
37
38 protected: 34 protected:
39 ~ImageDecodeTaskImpl() override {} 35 ~ImageDecodeTaskImpl() override {}
40 36
41 private: 37 private:
38 friend class GpuImageDecodeController;
42 GpuImageDecodeController* controller_; 39 GpuImageDecodeController* controller_;
43 DrawImage image_; 40 DrawImage image_;
44 skia::RefPtr<const SkImage> image_ref_; 41 skia::RefPtr<const SkImage> image_ref_;
45 uint64_t source_prepare_tiles_id_; 42 uint64_t source_prepare_tiles_id_;
46 43
47 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl); 44 DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl);
48 }; 45 };
49 46
50 GpuImageDecodeController::GpuImageDecodeController() {} 47 GpuImageDecodeController::GpuImageDecodeController() {}
51 48
(...skipping 26 matching lines...) Expand all
78 75
79 DecodedDrawImage GpuImageDecodeController::GetDecodedImageForDraw( 76 DecodedDrawImage GpuImageDecodeController::GetDecodedImageForDraw(
80 const DrawImage& draw_image) { 77 const DrawImage& draw_image) {
81 return DecodedDrawImage(draw_image.image(), draw_image.filter_quality()); 78 return DecodedDrawImage(draw_image.image(), draw_image.filter_quality());
82 } 79 }
83 80
84 void GpuImageDecodeController::DrawWithImageFinished( 81 void GpuImageDecodeController::DrawWithImageFinished(
85 const DrawImage& image, 82 const DrawImage& image,
86 const DecodedDrawImage& decoded_image) {} 83 const DecodedDrawImage& decoded_image) {}
87 84
85 void GpuImageDecodeController::CompleteTask(Task* task) {
86 ImageDecodeTaskImpl* decode_task = static_cast<ImageDecodeTaskImpl*>(task);
87 DCHECK(decode_task);
88 RemovePendingTaskForImage(decode_task->image_);
89 }
90
88 void GpuImageDecodeController::ReduceCacheUsage() {} 91 void GpuImageDecodeController::ReduceCacheUsage() {}
89 92
90 void GpuImageDecodeController::DecodeImage(const DrawImage& image) { 93 void GpuImageDecodeController::DecodeImage(const DrawImage& image) {
91 image.image()->preroll(); 94 image.image()->preroll();
92 base::AutoLock lock(lock_); 95 base::AutoLock lock(lock_);
93 prerolled_images_.insert(image.image()->uniqueID()); 96 prerolled_images_.insert(image.image()->uniqueID());
94 } 97 }
95 98
96 void GpuImageDecodeController::RemovePendingTaskForImage( 99 void GpuImageDecodeController::RemovePendingTaskForImage(
97 const DrawImage& image) { 100 const DrawImage& image) {
98 base::AutoLock lock(lock_); 101 base::AutoLock lock(lock_);
99 pending_image_tasks_.erase(image.image()->uniqueID()); 102 pending_image_tasks_.erase(image.image()->uniqueID());
100 } 103 }
101 104
102 } // namespace cc 105 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698