| 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()) {
|
|
|