| Index: src/effects/SkBlurImageFilter.cpp
|
| diff --git a/src/effects/SkBlurImageFilter.cpp b/src/effects/SkBlurImageFilter.cpp
|
| index 20976968fe8e8e1e922a1171f51c9fdaf94d9cfd..8398f48b7f815e3af535b299727137c01c7943b5 100644
|
| --- a/src/effects/SkBlurImageFilter.cpp
|
| +++ b/src/effects/SkBlurImageFilter.cpp
|
| @@ -8,6 +8,7 @@
|
| #include "SkBitmap.h"
|
| #include "SkBlurImageFilter.h"
|
| #include "SkColorPriv.h"
|
| +#include "SkDevice.h"
|
| #include "SkGpuBlurUtils.h"
|
| #include "SkOpts.h"
|
| #include "SkReadBuffer.h"
|
| @@ -90,9 +91,12 @@ bool SkBlurImageFilter::onFilterImage(Proxy* proxy,
|
| return false;
|
| }
|
|
|
| - if (!dst->tryAllocPixels(src.info().makeWH(srcBounds.width(), srcBounds.height()))) {
|
| + SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(srcBounds.width(), srcBounds.height()));
|
| + if (!device) {
|
| return false;
|
| }
|
| + *dst = device->accessBitmap(false);
|
| + SkAutoLockPixels alp_dst(*dst);
|
| dst->getBounds(&dstBounds);
|
|
|
| SkVector sigma = mapSigma(fSigma, ctx.ctm());
|
| @@ -113,10 +117,12 @@ bool SkBlurImageFilter::onFilterImage(Proxy* proxy,
|
| return true;
|
| }
|
|
|
| - SkBitmap temp;
|
| - if (!temp.tryAllocPixels(dst->info())) {
|
| + SkAutoTUnref<SkBaseDevice> tempDevice(proxy->createDevice(dst->width(), dst->height()));
|
| + if (!tempDevice) {
|
| return false;
|
| }
|
| + SkBitmap temp = tempDevice->accessBitmap(false);
|
| + SkAutoLockPixels alpTemp(temp);
|
|
|
| offset->fX = srcBounds.fLeft;
|
| offset->fY = srcBounds.fTop;
|
|
|