diff options
author | 2014-08-15 10:48:43 -0700 | |
---|---|---|
committer | 2014-08-15 10:48:43 -0700 | |
commit | 673d9732bf37df724500e04afcdf27d5c711ef60 (patch) | |
tree | 63629a1ffd19dfa31ea86800bd68585b7a483f1d /src | |
parent | cccb3b44e42af1aa52fe03a5a68e4f27367c910d (diff) |
Check all scratch texture allocations for image filters.
BUG=403677
R=bsalomon@google.com
NOTREECHECKS=true
Author: senorblanco@chromium.org
Review URL: https://codereview.chromium.org/473283002
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkImageFilter.cpp | 3 | ||||
-rw-r--r-- | src/effects/SkDisplacementMapEffect.cpp | 3 | ||||
-rw-r--r-- | src/effects/SkMorphologyImageFilter.cpp | 6 | ||||
-rw-r--r-- | src/effects/SkXfermodeImageFilter.cpp | 3 |
4 files changed, 15 insertions, 0 deletions
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index cf1f07696b..4a9a22e634 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -256,6 +256,9 @@ bool SkImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, const Cont desc.fConfig = kRGBA_8888_GrPixelConfig; GrAutoScratchTexture dst(context, desc); + if (NULL == dst.texture()) { + return false; + } GrContext::AutoMatrix am; am.setIdentity(context); GrContext::AutoRenderTarget art(context, dst.texture()->asRenderTarget()); diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp index 26aaa022ac..bae7ac098c 100644 --- a/src/effects/SkDisplacementMapEffect.cpp +++ b/src/effects/SkDisplacementMapEffect.cpp @@ -389,6 +389,9 @@ bool SkDisplacementMapEffect::filterImageGPU(Proxy* proxy, const SkBitmap& src, desc.fConfig = kSkia8888_GrPixelConfig; GrAutoScratchTexture ast(context, desc); + if (NULL == ast.texture()) { + return false; + } SkAutoTUnref<GrTexture> dst(ast.detach()); GrContext::AutoRenderTarget art(context, dst->asRenderTarget()); diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp index 49df654316..67769f29b9 100644 --- a/src/effects/SkMorphologyImageFilter.cpp +++ b/src/effects/SkMorphologyImageFilter.cpp @@ -506,6 +506,9 @@ bool apply_morphology(const SkBitmap& input, if (radius.fWidth > 0) { GrAutoScratchTexture ast(context, desc); + if (NULL == ast.texture()) { + return false; + } GrContext::AutoRenderTarget art(context, ast.texture()->asRenderTarget()); apply_morphology_pass(context, src, srcRect, dstRect, radius.fWidth, morphType, Gr1DKernelEffect::kX_Direction); @@ -519,6 +522,9 @@ bool apply_morphology(const SkBitmap& input, } if (radius.fHeight > 0) { GrAutoScratchTexture ast(context, desc); + if (NULL == ast.texture()) { + return false; + } GrContext::AutoRenderTarget art(context, ast.texture()->asRenderTarget()); apply_morphology_pass(context, src, srcRect, dstRect, radius.fHeight, morphType, Gr1DKernelEffect::kY_Direction); diff --git a/src/effects/SkXfermodeImageFilter.cpp b/src/effects/SkXfermodeImageFilter.cpp index cf32cf5cb0..c876d5f6b3 100644 --- a/src/effects/SkXfermodeImageFilter.cpp +++ b/src/effects/SkXfermodeImageFilter.cpp @@ -132,6 +132,9 @@ bool SkXfermodeImageFilter::filterImageGPU(Proxy* proxy, desc.fConfig = kSkia8888_GrPixelConfig; GrAutoScratchTexture ast(context, desc); + if (NULL == ast.texture()) { + return false; + } SkAutoTUnref<GrTexture> dst(ast.detach()); GrContext::AutoRenderTarget art(context, dst->asRenderTarget()); |