Index: src/core/SkImageFilter.cpp |
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp |
index 6356c1a5dd0ab33fb9d49f9baf813631317f44f8..4c4b56beace2f60b9ff858e70c76cd6c1f3b2cd7 100644 |
--- a/src/core/SkImageFilter.cpp |
+++ b/src/core/SkImageFilter.cpp |
@@ -122,6 +122,16 @@ bool SkImageFilter::filterBounds(const SkIRect& src, const SkMatrix& ctm, |
SkIRect* dst) const { |
SkASSERT(&src); |
SkASSERT(dst); |
+ if (SkImageFilter::GetExternalCache()) { |
+ /* |
+ * When the external cache is active, do not intersect the saveLayer |
+ * bounds with the clip bounds. This is so that the cached result |
+ * is always the full size of the primitive's bounds, |
+ * regardless of the clip active on first draw. |
+ */ |
+ *dst = SkIRect::MakeLargest(); |
+ return true; |
+ } |
return this->onFilterBounds(src, ctm, dst); |
} |