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

Unified Diff: cc/tiles/software_image_decode_controller.cc

Issue 1900953004: Switch DrawImage to sk_sp<> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Florin's nit 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/software_image_decode_controller.cc
diff --git a/cc/tiles/software_image_decode_controller.cc b/cc/tiles/software_image_decode_controller.cc
index c074af98857be59b59f895bd53b380b75ca746ea..e2528f89a3ed073555c520dbe10f95be54505518 100644
--- a/cc/tiles/software_image_decode_controller.cc
+++ b/cc/tiles/software_image_decode_controller.cc
@@ -19,6 +19,7 @@
#include "cc/raster/tile_task.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkImage.h"
+#include "third_party/skia/include/core/SkPixmap.h"
#include "ui/gfx/skia_util.h"
namespace cc {
@@ -64,7 +65,6 @@ class ImageDecodeTaskImpl : public TileTask {
controller_(controller),
image_key_(image_key),
image_(image),
- image_ref_(skia::SharePtr(image.image())),
source_prepare_tiles_id_(source_prepare_tiles_id) {}
// Overridden from Task:
@@ -73,7 +73,7 @@ class ImageDecodeTaskImpl : public TileTask {
"software", "source_prepare_tiles_id",
source_prepare_tiles_id_);
devtools_instrumentation::ScopedImageDecodeTask image_decode_task(
- image_ref_.get());
+ image_.image().get());
controller_->DecodeImage(image_key_, image_);
}
@@ -90,7 +90,6 @@ class ImageDecodeTaskImpl : public TileTask {
SoftwareImageDecodeController* controller_;
SoftwareImageDecodeController::ImageKey image_key_;
DrawImage image_;
- skia::RefPtr<const SkImage> image_ref_;
uint64_t source_prepare_tiles_id_;
DISALLOW_COPY_AND_ASSIGN(ImageDecodeTaskImpl);
@@ -370,19 +369,19 @@ SoftwareImageDecodeController::DecodeImageInternal(
TRACE_EVENT1("disabled-by-default-cc.debug",
"SoftwareImageDecodeController::DecodeImageInternal", "key",
key.ToString());
- const SkImage* image = draw_image.image();
+ sk_sp<const SkImage> image = draw_image.image();
if (!image)
return nullptr;
switch (key.filter_quality()) {
case kNone_SkFilterQuality:
case kLow_SkFilterQuality:
- return GetOriginalImageDecode(key, *image);
+ return GetOriginalImageDecode(key, std::move(image));
case kMedium_SkFilterQuality:
NOTIMPLEMENTED();
return nullptr;
case kHigh_SkFilterQuality:
- return GetScaledImageDecode(key, *image);
+ return GetScaledImageDecode(key, std::move(image));
default:
NOTREACHED();
return nullptr;
@@ -499,10 +498,11 @@ DecodedDrawImage SoftwareImageDecodeController::GetDecodedImageForDrawInternal(
}
std::unique_ptr<SoftwareImageDecodeController::DecodedImage>
-SoftwareImageDecodeController::GetOriginalImageDecode(const ImageKey& key,
- const SkImage& image) {
+SoftwareImageDecodeController::GetOriginalImageDecode(
+ const ImageKey& key,
+ sk_sp<const SkImage> image) {
SkImageInfo decoded_info =
- CreateImageInfo(image.width(), image.height(), format_);
+ CreateImageInfo(image->width(), image->height(), format_);
std::unique_ptr<base::DiscardableMemory> decoded_pixels;
{
TRACE_EVENT0("disabled-by-default-cc.debug",
@@ -517,9 +517,9 @@ SoftwareImageDecodeController::GetOriginalImageDecode(const ImageKey& key,
TRACE_EVENT0("disabled-by-default-cc.debug",
"SoftwareImageDecodeController::GetOriginalImageDecode - "
"read pixels");
- bool result = image.readPixels(decoded_info, decoded_pixels->data(),
- decoded_info.minRowBytes(), 0, 0,
- SkImage::kDisallow_CachingHint);
+ bool result = image->readPixels(decoded_info, decoded_pixels->data(),
+ decoded_info.minRowBytes(), 0, 0,
+ SkImage::kDisallow_CachingHint);
if (!result) {
decoded_pixels->Unlock();
@@ -532,12 +532,13 @@ SoftwareImageDecodeController::GetOriginalImageDecode(const ImageKey& key,
}
std::unique_ptr<SoftwareImageDecodeController::DecodedImage>
-SoftwareImageDecodeController::GetScaledImageDecode(const ImageKey& key,
- const SkImage& image) {
+SoftwareImageDecodeController::GetScaledImageDecode(
+ const ImageKey& key,
+ sk_sp<const SkImage> image) {
// Construct a key to use in GetDecodedImageForDrawInternal().
// This allows us to reuse an image in any cache if available.
- gfx::Rect full_image_rect(image.width(), image.height());
- DrawImage original_size_draw_image(&image,
+ gfx::Rect full_image_rect(image->width(), image->height());
+ DrawImage original_size_draw_image(std::move(image),
gfx::RectToSkIRect(full_image_rect),
kNone_SkFilterQuality, SkMatrix::I());
ImageKey original_size_key =
@@ -887,9 +888,9 @@ SoftwareImageDecodeController::DecodedImage::DecodedImage(
memory_(std::move(memory)),
src_rect_offset_(src_rect_offset),
tracing_id_(tracing_id) {
- image_ = skia::AdoptRef(SkImage::NewFromRaster(
- image_info_, memory_->data(), image_info_.minRowBytes(),
- [](const void* pixels, void* context) {}, nullptr));
+ SkPixmap pixmap(image_info_, memory_->data(), image_info_.minRowBytes());
+ image_ = SkImage::MakeFromRaster(
+ pixmap, [](const void* pixels, void* context) {}, nullptr);
}
SoftwareImageDecodeController::DecodedImage::~DecodedImage() {

Powered by Google App Engine
This is Rietveld 408576698