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

Unified Diff: ash/desktop_background/desktop_background_controller.cc

Issue 81393004: ash: Avoid reloading already-resized custom wallpaper. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add another MakeThreadSafe() call to WallpaperResizer Created 7 years, 1 month 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: ash/desktop_background/desktop_background_controller.cc
diff --git a/ash/desktop_background/desktop_background_controller.cc b/ash/desktop_background/desktop_background_controller.cc
index 2f4e6334ff3f250a068c535943cca452c49d5c6d..6a743e3f7978fe797785db61b06c4d830ddb8034 100644
--- a/ash/desktop_background/desktop_background_controller.cc
+++ b/ash/desktop_background/desktop_background_controller.cc
@@ -120,6 +120,7 @@ class DesktopBackgroundController::WallpaperLoader
if (file_bitmap_) {
gfx::ImageSkia image = gfx::ImageSkia::CreateFrom1xBitmap(*file_bitmap_);
+ image.MakeThreadSafe();
wallpaper_resizer_.reset(new WallpaperResizer(
image, GetMaxDisplaySizeInNative(), file_layout_));
} else {
@@ -169,7 +170,7 @@ DesktopBackgroundController::~DesktopBackgroundController() {
gfx::ImageSkia DesktopBackgroundController::GetWallpaper() const {
if (current_wallpaper_)
- return current_wallpaper_->wallpaper_image();
+ return current_wallpaper_->image();
return gfx::ImageSkia();
}
@@ -196,7 +197,7 @@ void DesktopBackgroundController::OnRootWindowAdded(
return;
gfx::Size max_display_size = GetMaxDisplaySizeInNative();
// Handle resolution change for "built-in" images.
- if (BACKGROUND_IMAGE == desktop_background_mode_ &&
+ if (desktop_background_mode_ == BACKGROUND_IMAGE &&
current_wallpaper_.get() &&
current_max_display_size_ != max_display_size) {
current_max_display_size_ = max_display_size;
@@ -304,7 +305,9 @@ bool DesktopBackgroundController::MoveDesktopToUnlockedContainer() {
void DesktopBackgroundController::OnDisplayConfigurationChanged() {
gfx::Size max_display_size = GetMaxDisplaySizeInNative();
- if (current_max_display_size_ != max_display_size) {
+ if (desktop_background_mode_ == BACKGROUND_IMAGE &&
+ current_wallpaper_.get() &&
+ current_max_display_size_ != max_display_size) {
current_max_display_size_ = max_display_size;
timer_.Stop();
timer_.Start(FROM_HERE,
@@ -327,7 +330,8 @@ bool DesktopBackgroundController::DefaultWallpaperIsAlreadyLoadingOrLoaded(
bool DesktopBackgroundController::CustomWallpaperIsAlreadyLoaded(
const gfx::ImageSkia& image) const {
return current_wallpaper_.get() &&
- current_wallpaper_->wallpaper_image().BackedBySameObjectAs(image);
+ (WallpaperResizer::GetImageId(image) ==
+ current_wallpaper_->original_image_id());
}
void DesktopBackgroundController::SetDesktopBackgroundImageMode() {

Powered by Google App Engine
This is Rietveld 408576698