Index: src/effects/SkLightingImageFilter.cpp |
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp |
index 206be1b62d847fdaa59b033e864f006538db9e6f..54bb1c890bebe9b71c108051c0c44f9259893707 100644 |
--- a/src/effects/SkLightingImageFilter.cpp |
+++ b/src/effects/SkLightingImageFilter.cpp |
@@ -946,19 +946,17 @@ bool SkDiffuseLightingImageFilter::onFilterImage(Proxy* proxy, |
if (src.colorType() != kPMColor_SkColorType) { |
return false; |
} |
- SkAutoLockPixels alp(src); |
- if (!src.getPixels()) { |
+ SkIRect bounds; |
+ if (!this->applyCropRect(ctx, proxy, src, &srcOffset, &bounds, &src)) { |
return false; |
} |
- SkIRect bounds; |
- src.getBounds(&bounds); |
- bounds.offset(srcOffset); |
- if (!this->applyCropRect(&bounds, ctx.ctm())) { |
+ if (bounds.width() < 2 || bounds.height() < 2) { |
return false; |
} |
- if (bounds.width() < 2 || bounds.height() < 2) { |
+ SkAutoLockPixels alp(src); |
+ if (!src.getPixels()) { |
return false; |
} |
@@ -1039,15 +1037,9 @@ bool SkSpecularLightingImageFilter::onFilterImage(Proxy* proxy, |
if (src.colorType() != kPMColor_SkColorType) { |
return false; |
} |
- SkAutoLockPixels alp(src); |
- if (!src.getPixels()) { |
- return false; |
- } |
SkIRect bounds; |
- src.getBounds(&bounds); |
- bounds.offset(srcOffset); |
- if (!this->applyCropRect(&bounds, ctx.ctm())) { |
+ if (!this->applyCropRect(ctx, proxy, src, &srcOffset, &bounds, &src)) { |
return false; |
} |
@@ -1055,6 +1047,11 @@ bool SkSpecularLightingImageFilter::onFilterImage(Proxy* proxy, |
return false; |
} |
+ SkAutoLockPixels alp(src); |
+ if (!src.getPixels()) { |
+ return false; |
+ } |
+ |
dst->setConfig(src.config(), bounds.width(), bounds.height()); |
dst->allocPixels(); |
if (!dst->getPixels()) { |