Index: src/effects/SkBlurMaskFilter.cpp |
diff --git a/src/effects/SkBlurMaskFilter.cpp b/src/effects/SkBlurMaskFilter.cpp |
index 5cb98153f0231b539f142c050e820e9d0d1fb0b6..9b3354484b9a02ce5151f65f1557744a7dd84002 100644 |
--- a/src/effects/SkBlurMaskFilter.cpp |
+++ b/src/effects/SkBlurMaskFilter.cpp |
@@ -527,17 +527,18 @@ public: |
*/ |
static GrEffectRef* Create(GrContext *context, const SkRect& rect, |
float sigma) { |
- GrTexture *horizontalScanline, *verticalScanline; |
+ GrTexture *horizontalScanline = NULL, *verticalScanline = NULL; |
bool createdScanlines = CreateScanlineTextures(context, sigma, |
SkScalarCeilToInt(rect.width()), |
SkScalarCeilToInt(rect.height()), |
&horizontalScanline, &verticalScanline); |
robertphillips
2014/01/31 13:33:10
Won't this potentially cause a problem if the hori
humper
2014/01/31 13:51:17
yeah, I'll land a better fix for this once this pa
|
- if (!createdScanlines) { |
+ SkAutoTUnref<GrTexture> hunref(horizontalScanline), vunref(verticalScanline); |
+ if (!createdScanlines) { |
return NULL; |
} |
AutoEffectUnref effect(SkNEW_ARGS(GrRectBlurEffect, (rect, sigma, |
horizontalScanline, verticalScanline))); |
- return CreateEffectRef(effect); |
+ return CreateEffectRef(effect); |
} |
unsigned int getWidth() const { return fWidth; } |
@@ -686,6 +687,7 @@ bool GrRectBlurEffect::CreateScanlineTextures(GrContext *context, float sigma, |
verticalPixels, 0); |
if (NULL == *verticalScanline) { |
+ (*horizontalScanline)->unref(); |
return false; |
} |