| 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 f95c32e9391c4da59e398b819e4a4ba03b71ab04..5b2562e39f8f7f2156f6b680f9e375ee05a0a8a3 100644
|
| --- a/ash/desktop_background/desktop_background_controller.cc
|
| +++ b/ash/desktop_background/desktop_background_controller.cc
|
| @@ -41,10 +41,8 @@ class DesktopBackgroundController::WallpaperOperation
|
| void LoadingWallpaper() {
|
| if (cancel_flag_.IsSet())
|
| return;
|
| -
|
| wallpaper_ = ui::ResourceBundle::GetSharedInstance().GetImageNamed(
|
| GetWallpaperInfo(index_).id).ToSkBitmap();
|
| -
|
| if (cancel_flag_.IsSet())
|
| return;
|
| layout_ = GetWallpaperInfo(index_).layout;
|
| @@ -58,7 +56,7 @@ class DesktopBackgroundController::WallpaperOperation
|
| return wallpaper_;
|
| }
|
|
|
| - ImageLayout image_layout() {
|
| + WallpaperLayout wallpaper_layout() {
|
| return layout_;
|
| }
|
|
|
| @@ -69,12 +67,11 @@ class DesktopBackgroundController::WallpaperOperation
|
| private:
|
| friend class base::RefCountedThreadSafe<
|
| DesktopBackgroundController::WallpaperOperation>;
|
| - ~WallpaperOperation(){};
|
|
|
| base::CancellationFlag cancel_flag_;
|
|
|
| const SkBitmap* wallpaper_;
|
| - ImageLayout layout_;
|
| + WallpaperLayout layout_;
|
| int index_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(WallpaperOperation);
|
| @@ -93,6 +90,7 @@ DesktopBackgroundController::~DesktopBackgroundController() {
|
| void DesktopBackgroundController::SetDefaultWallpaper(int index) {
|
| if (previous_index_ == index)
|
| return;
|
| +
|
| CancelPendingWallpaperOperation();
|
|
|
| wallpaper_op_ = new WallpaperOperation(index);
|
| @@ -105,6 +103,15 @@ void DesktopBackgroundController::SetDefaultWallpaper(int index) {
|
| true /* task_is_slow */);
|
| }
|
|
|
| +void DesktopBackgroundController::SetCustomWallpaper(const SkBitmap& wallpaper,
|
| + WallpaperLayout layout) {
|
| + internal::RootWindowLayoutManager* root_window_layout =
|
| + Shell::GetInstance()->root_window_layout();
|
| + root_window_layout->SetBackgroundLayer(NULL);
|
| + internal::CreateDesktopBackground(wallpaper, layout);
|
| + desktop_background_mode_ = BACKGROUND_IMAGE;
|
| +}
|
| +
|
| void DesktopBackgroundController::CancelPendingWallpaperOperation() {
|
| // Set canceled flag of previous request to skip unneeded loading.
|
| if (wallpaper_op_.get())
|
| @@ -148,7 +155,7 @@ void DesktopBackgroundController::SetDesktopBackgroundImageMode(
|
| Shell::GetInstance()->root_window_layout();
|
| root_window_layout->SetBackgroundLayer(NULL);
|
| if(wo->wallpaper()) {
|
| - internal::CreateDesktopBackground(*wo->wallpaper(), wo->image_layout());
|
| + internal::CreateDesktopBackground(*wo->wallpaper(), wo->wallpaper_layout());
|
| desktop_background_mode_ = BACKGROUND_IMAGE;
|
| }
|
| }
|
|
|