Index: src/core/SkImageFilter.cpp |
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp |
index b67fbe01e7b926fbedc5e1a52c5b2b21fbd8eaff..4c4b56beace2f60b9ff858e70c76cd6c1f3b2cd7 100644 |
--- a/src/core/SkImageFilter.cpp |
+++ b/src/core/SkImageFilter.cpp |
@@ -379,10 +379,7 @@ |
class CacheImpl : public SkImageFilter::Cache { |
public: |
- explicit CacheImpl(int minChildren) : fMinChildren(minChildren) { |
- SkASSERT(fMinChildren <= 2); |
- } |
- |
+ explicit CacheImpl(int minChildren) : fMinChildren(minChildren) {} |
virtual ~CacheImpl(); |
bool get(const SkImageFilter* key, SkBitmap* result, SkIPoint* offset) SK_OVERRIDE; |
void set(const SkImageFilter* key, const SkBitmap& result, const SkIPoint& offset) SK_OVERRIDE; |
@@ -425,10 +422,7 @@ |
} |
void CacheImpl::set(const SkImageFilter* key, const SkBitmap& result, const SkIPoint& offset) { |
- if (fMinChildren < 2 || !key->unique()) { |
- // We take !key->unique() as a signal that there are probably at least 2 refs on the key, |
- // meaning this filter probably has at least two children and is worth caching when |
- // fMinChildren is 2. If fMinChildren is less than two, we'll just always cache. |
+ if (key->getRefCnt() >= fMinChildren) { |
fData.add(new Value(key, result, offset)); |
} |
} |