| Index: src/core/SkBitmapCache.cpp
|
| diff --git a/src/core/SkBitmapCache.cpp b/src/core/SkBitmapCache.cpp
|
| index 84f10363f02aac1bd9b62e9f0c7db7f401e29af7..5044d305186bfc00ef24a197defe42e94b2ec8be 100644
|
| --- a/src/core/SkBitmapCache.cpp
|
| +++ b/src/core/SkBitmapCache.cpp
|
| @@ -70,33 +70,41 @@ struct BitmapRec : public SkResourceCache::Rec {
|
| }
|
| };
|
|
|
| -bool SkBitmapCache::Find(const SkBitmap& src, SkScalar invScaleX, SkScalar invScaleY,
|
| - SkBitmap* result) {
|
| +#define CHECK_LOCAL(localCache, localName, globalName, ...) \
|
| + (localCache) ? localCache->localName(__VA_ARGS__) : SkResourceCache::globalName(__VA_ARGS__)
|
| +
|
| +bool SkBitmapCache::Find(const SkBitmap& src, SkScalar invScaleX, SkScalar invScaleY, SkBitmap* result,
|
| + SkResourceCache* localCache) {
|
| if (0 == invScaleX || 0 == invScaleY) {
|
| // degenerate, and the key we use for mipmaps
|
| return false;
|
| }
|
| BitmapKey key(src.getGenerationID(), invScaleX, invScaleY, get_bounds_from_bitmap(src));
|
| - return SkResourceCache::Find(key, BitmapRec::Visitor, result);
|
| +
|
| + return CHECK_LOCAL(localCache, find, Find, key, BitmapRec::Visitor, result);
|
| }
|
|
|
| void SkBitmapCache::Add(const SkBitmap& src, SkScalar invScaleX, SkScalar invScaleY,
|
| - const SkBitmap& result) {
|
| + const SkBitmap& result, SkResourceCache* localCache) {
|
| if (0 == invScaleX || 0 == invScaleY) {
|
| // degenerate, and the key we use for mipmaps
|
| return;
|
| }
|
| SkASSERT(result.isImmutable());
|
| - SkResourceCache::Add(SkNEW_ARGS(BitmapRec, (src.getGenerationID(), invScaleX, invScaleY,
|
| - get_bounds_from_bitmap(src), result)));
|
| + BitmapRec* rec = SkNEW_ARGS(BitmapRec, (src.getGenerationID(), invScaleX, invScaleY,
|
| + get_bounds_from_bitmap(src), result));
|
| + CHECK_LOCAL(localCache, add, Add, rec);
|
| }
|
|
|
| -bool SkBitmapCache::Find(uint32_t genID, const SkIRect& subset, SkBitmap* result) {
|
| +bool SkBitmapCache::Find(uint32_t genID, const SkIRect& subset, SkBitmap* result,
|
| + SkResourceCache* localCache) {
|
| BitmapKey key(genID, SK_Scalar1, SK_Scalar1, subset);
|
| - return SkResourceCache::Find(key, BitmapRec::Visitor, result);
|
| +
|
| + return CHECK_LOCAL(localCache, find, Find, key, BitmapRec::Visitor, result);
|
| }
|
|
|
| -bool SkBitmapCache::Add(uint32_t genID, const SkIRect& subset, const SkBitmap& result) {
|
| +bool SkBitmapCache::Add(uint32_t genID, const SkIRect& subset, const SkBitmap& result,
|
| + SkResourceCache* localCache) {
|
| SkASSERT(result.isImmutable());
|
|
|
| if (subset.isEmpty()
|
| @@ -106,9 +114,9 @@ bool SkBitmapCache::Add(uint32_t genID, const SkIRect& subset, const SkBitmap& r
|
| || result.height() != subset.height()) {
|
| return false;
|
| } else {
|
| - SkResourceCache::Add(SkNEW_ARGS(BitmapRec, (genID, SK_Scalar1, SK_Scalar1,
|
| - subset, result)));
|
| + BitmapRec* rec = SkNEW_ARGS(BitmapRec, (genID, SK_Scalar1, SK_Scalar1, subset, result));
|
|
|
| + CHECK_LOCAL(localCache, add, Add, rec);
|
| return true;
|
| }
|
| }
|
|
|