diff options
author | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-30 20:59:41 +0000 |
---|---|---|
committer | mihaip@chromium.org <mihaip@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-30 20:59:41 +0000 |
commit | 42fd4d774e15a393bf4f2aac8a68e7593a7a95bb (patch) | |
tree | 96e6b4ac9d35497d5b739d8ed072541368c331f1 /ash/app_list/icon_cache.cc | |
parent | f5afc0732dc20346c49ed44ebe096e84377e4f3a (diff) | |
download | chromium_src-42fd4d774e15a393bf4f2aac8a68e7593a7a95bb.zip chromium_src-42fd4d774e15a393bf4f2aac8a68e7593a7a95bb.tar.gz chromium_src-42fd4d774e15a393bf4f2aac8a68e7593a7a95bb.tar.bz2 |
Revert 129925 - ash: Icon cache for app list to save shadow generation time.
- Add an IconCache that stores processed (resized and shadow-generated) image,
keyed by source image + desired size;
- The cache is created with AppList controller and destroyed when controller is
gone;
- Controller marks all entries in cache unused before showing the UI and purges
all unused entry after dismissing UI;
- In item view, try cache first to get processed image before scheduling job,
and update cache when background processing comes back;
BUG=120961
TEST=Verify fix for issue 120961.
Review URL: http://codereview.chromium.org/9934006
TBR=xiyuan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9959039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129931 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/app_list/icon_cache.cc')
-rw-r--r-- | ash/app_list/icon_cache.cc | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/ash/app_list/icon_cache.cc b/ash/app_list/icon_cache.cc deleted file mode 100644 index dcd295c..0000000 --- a/ash/app_list/icon_cache.cc +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ash/app_list/icon_cache.h" - -#include "base/logging.h" -#include "base/md5.h" -#include "ui/gfx/size.h" - -namespace { - -// Gets cache key based on |image| contents and desired |size|. -std::string GetKey(const SkBitmap& image, const gfx::Size& size) { - SkAutoLockPixels image_lock(image); - base::MD5Digest digest; - MD5Sum(image.getPixels(), image.getSize(), &digest); - - return MD5DigestToBase16(digest) + "." + size.ToString(); -} - -} // namespace - -namespace ash { - -// static -IconCache* IconCache::instance_ = NULL; - -// static -void IconCache::CreateInstance() { - DCHECK(!instance_); - instance_ = new IconCache; -} - -// static -void IconCache::DeleteInstance() { - DCHECK(instance_); - delete instance_; - instance_ = NULL; -} - -// static -IconCache* IconCache::GetInstance() { - DCHECK(instance_); - return instance_; -} - -void IconCache::MarkAllEntryUnused() { - for (Cache::iterator i = cache_.begin(); i != cache_.end(); ++i) - i->second.used = false; -} - -void IconCache::PurgeAllUnused() { - for (Cache::iterator i = cache_.begin(); i != cache_.end();) { - Cache::iterator current(i); - ++i; - if (!current->second.used) - cache_.erase(current); - } -} - -bool IconCache::Get(const SkBitmap& src, - const gfx::Size& size, - SkBitmap* processed) { - Cache::iterator it = cache_.find(GetKey(src, size)); - if (it == cache_.end()) - return false; - - it->second.used = true; - - if (processed) - *processed = it->second.image; - return true; -} - -void IconCache::Put(const SkBitmap& src, - const gfx::Size& size, - const SkBitmap& processed) { - const std::string key = GetKey(src, size); - cache_[key].image = processed; - cache_[key].used = true; -} - -IconCache::IconCache() { -} - -} // namespace ash |