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

Unified Diff: ash/common/wallpaper/wallpaper_controller.cc

Issue 2772313004: [ash-md] WIP Added wallpaper color caching. (Closed)
Patch Set: "Working'ish" prototype Created 3 years, 9 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: ash/common/wallpaper/wallpaper_controller.cc
diff --git a/ash/common/wallpaper/wallpaper_controller.cc b/ash/common/wallpaper/wallpaper_controller.cc
index d1b23e276bf7cd4108002542dbe59ca57c7c9bb2..d3671db05911b63e57e008b2444f8fac078a6919 100644
--- a/ash/common/wallpaper/wallpaper_controller.cc
+++ b/ash/common/wallpaper/wallpaper_controller.cc
@@ -21,6 +21,7 @@
#include "base/command_line.h"
#include "base/logging.h"
#include "base/task_runner.h"
+#include "components/wallpaper/wallpaper_color_cache.h"
#include "components/wallpaper/wallpaper_color_calculator.h"
#include "components/wallpaper/wallpaper_resizer.h"
#include "ui/display/manager/managed_display_info.h"
@@ -71,6 +72,7 @@ WallpaperController::WallpaperController(
const scoped_refptr<base::TaskRunner>& task_runner)
: locked_(false),
wallpaper_mode_(WALLPAPER_NONE),
+ color_cache_(nullptr),
prominent_color_(SK_ColorTRANSPARENT),
wallpaper_reload_delay_(kWallpaperReloadDelayMs),
task_runner_(task_runner) {
@@ -245,6 +247,12 @@ void WallpaperController::OpenSetWallpaperPage() {
}
}
+void WallpaperController::SetWallpaperColorCache(
+ wallpaper::WallpaperColorCache* color_cache) {
+ CHECK(!color_cache_);
+ color_cache_ = color_cache;
+}
+
void WallpaperController::SetWallpaperPicker(mojom::WallpaperPickerPtr picker) {
wallpaper_picker_ = std::move(picker);
}
@@ -263,6 +271,12 @@ void WallpaperController::OnWallpaperResized() {
void WallpaperController::OnColorCalculationComplete() {
const SkColor color = color_calculator_->prominent_color();
+
+ if (color_cache_) {
+ // TODO(bruthig): GetWallpaperOriginalImageId() is insufficient!!
+ color_cache_->SetColor(GetWallpaperOriginalImageId(), color);
+ }
+
color_calculator_.reset();
SetProminentColor(color);
}
@@ -353,6 +367,17 @@ void WallpaperController::CalculateWallpaperColors() {
if (color_calculator_)
color_calculator_->RemoveObserver(this);
+ color_calculator_.reset();
+
+ if (color_cache_) {
+ SkColor color;
+ // TODO(bruthig): GetWallpaperOriginalImageId() is insufficient!!
+ if (color_cache_->GetColor(GetWallpaperOriginalImageId(), &color)) {
+ SetProminentColor(color);
+ return;
+ }
+ }
+
color_calculator_ = base::MakeUnique<wallpaper::WallpaperColorCalculator>(
GetWallpaper(), luma, saturation, task_runner_);
color_calculator_->AddObserver(this);

Powered by Google App Engine
This is Rietveld 408576698