| Index: chrome/browser/chromeos/login/wallpaper_manager.cc
|
| diff --git a/chrome/browser/chromeos/login/wallpaper_manager.cc b/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| index 12df7fc872c7481f34d685fb28890f0ebb65a8f9..1c00baadf672b4e38ea9f5aab2116d6f34107938 100644
|
| --- a/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| +++ b/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| @@ -737,9 +737,10 @@ void WallpaperManager::CacheUserWallpaper(const std::string& email) {
|
| }
|
|
|
| void WallpaperManager::CacheThumbnail(const std::string& email,
|
| - const gfx::ImageSkia& wallpaper) {
|
| + scoped_ptr<gfx::ImageSkia> wallpaper) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| - custom_wallpaper_thumbnail_cache_[email] = GetWallpaperThumbnail(wallpaper);
|
| + custom_wallpaper_thumbnail_cache_[email] =
|
| + GetWallpaperThumbnail(*wallpaper.get());
|
| }
|
|
|
| void WallpaperManager::DeleteWallpaperInList(
|
| @@ -1083,13 +1084,16 @@ void WallpaperManager::OnWallpaperDecoded(const std::string& email,
|
| }
|
| return;
|
| }
|
| + // Generate all reps before passing to another thread.
|
| + wallpaper.image().EnsureRepsForSupportedScaleFactors();
|
| + scoped_ptr<gfx::ImageSkia> deep_copy(wallpaper.image().DeepCopy());
|
|
|
| BrowserThread::PostTask(
|
| BrowserThread::FILE,
|
| FROM_HERE,
|
| base::Bind(&WallpaperManager::CacheThumbnail,
|
| base::Unretained(this), email,
|
| - wallpaper.image().DeepCopy()));
|
| + base::Passed(&deep_copy)));
|
| // Only cache user wallpaper at login screen.
|
| if (!UserManager::Get()->IsUserLoggedIn()) {
|
| wallpaper_cache_.insert(std::make_pair(email, wallpaper.image()));
|
|
|