| Index: ash/desktop_background/wallpaper_resizer.cc
|
| diff --git a/ash/desktop_background/wallpaper_resizer.cc b/ash/desktop_background/wallpaper_resizer.cc
|
| index b75e262e25f2ac8dbd1bb81a7e465a11fc21acaf..06d8c97da7d53c54b0e06d40c72c8488314c314c 100644
|
| --- a/ash/desktop_background/wallpaper_resizer.cc
|
| +++ b/ash/desktop_background/wallpaper_resizer.cc
|
| @@ -10,7 +10,9 @@
|
| #include "base/threading/sequenced_worker_pool.h"
|
| #include "base/threading/worker_pool.h"
|
| #include "content/public/browser/browser_thread.h"
|
| +#include "third_party/skia/include/core/SkImage.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/gfx/image/image_skia_rep.h"
|
| #include "ui/gfx/skia_util.h"
|
|
|
| using content::BrowserThread;
|
| @@ -91,23 +93,33 @@ void Resize(SkBitmap orig_bitmap,
|
|
|
| } // namespace
|
|
|
| +// static
|
| +uint32_t WallpaperResizer::GetImageId(const gfx::ImageSkia& image) {
|
| + const gfx::ImageSkiaRep& image_rep = image.GetRepresentation(1.0f);
|
| + return image_rep.is_null() ? 0 : image_rep.sk_bitmap().getGenerationID();
|
| +}
|
| +
|
| WallpaperResizer::WallpaperResizer(int image_resource_id,
|
| const gfx::Size& target_size,
|
| WallpaperLayout layout)
|
| - : wallpaper_image_(*(ui::ResourceBundle::GetSharedInstance().
|
| + : image_(*(ui::ResourceBundle::GetSharedInstance().
|
| GetImageNamed(image_resource_id).ToImageSkia())),
|
| + original_image_id_(GetImageId(image_)),
|
| target_size_(target_size),
|
| layout_(layout),
|
| weak_ptr_factory_(this) {
|
| + image_.MakeThreadSafe();
|
| }
|
|
|
| WallpaperResizer::WallpaperResizer(const gfx::ImageSkia& image,
|
| const gfx::Size& target_size,
|
| WallpaperLayout layout)
|
| - : wallpaper_image_(image),
|
| + : image_(image),
|
| + original_image_id_(GetImageId(image_)),
|
| target_size_(target_size),
|
| layout_(layout),
|
| weak_ptr_factory_(this) {
|
| + image_.MakeThreadSafe();
|
| }
|
|
|
| WallpaperResizer::~WallpaperResizer() {
|
| @@ -118,7 +130,7 @@ void WallpaperResizer::StartResize() {
|
| SkBitmap* resized_bitmap = new SkBitmap;
|
| if (!content::BrowserThread::PostBlockingPoolTaskAndReply(
|
| FROM_HERE,
|
| - base::Bind(&Resize, *wallpaper_image_.bitmap(), target_size_,
|
| + base::Bind(&Resize, *image_.bitmap(), target_size_,
|
| layout_, resized_bitmap),
|
| base::Bind(&WallpaperResizer::OnResizeFinished,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| @@ -138,7 +150,7 @@ void WallpaperResizer::RemoveObserver(WallpaperResizerObserver* observer) {
|
|
|
| void WallpaperResizer::OnResizeFinished(SkBitmap* resized_bitmap) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - wallpaper_image_ = gfx::ImageSkia::CreateFrom1xBitmap(*resized_bitmap);
|
| + image_ = gfx::ImageSkia::CreateFrom1xBitmap(*resized_bitmap);
|
| FOR_EACH_OBSERVER(WallpaperResizerObserver, observers_,
|
| OnWallpaperResized());
|
| }
|
|
|