Index: src/effects/SkLightingImageFilter.cpp |
diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp |
index d281da400bc97fefbbb1a75727f6e49fa28cb78f..9d7ce95b07af4d966cb27d3e6e3ff657201eacb7 100644 |
--- a/src/effects/SkLightingImageFilter.cpp |
+++ b/src/effects/SkLightingImageFilter.cpp |
@@ -15,6 +15,7 @@ |
#include "SkTypes.h" |
#if SK_SUPPORT_GPU |
+#include "GrDrawContext.h" |
#include "GrFragmentProcessor.h" |
#include "GrInvariantOutput.h" |
#include "effects/GrSingleTextureEffect.h" |
@@ -310,7 +311,7 @@ protected: |
#endif |
private: |
#if SK_SUPPORT_GPU |
- void drawRect(GrContext* context, |
+ void drawRect(GrDrawContext* drawContext, |
GrTexture* src, |
GrTexture* dst, |
const SkMatrix& matrix, |
@@ -323,7 +324,7 @@ private: |
}; |
#if SK_SUPPORT_GPU |
-void SkLightingImageFilterInternal::drawRect(GrContext* context, |
+void SkLightingImageFilterInternal::drawRect(GrDrawContext* drawContext, |
GrTexture* src, |
GrTexture* dst, |
const SkMatrix& matrix, |
@@ -335,8 +336,8 @@ void SkLightingImageFilterInternal::drawRect(GrContext* context, |
GrFragmentProcessor* fp = this->getFragmentProcessor(src, matrix, bounds, boundaryMode); |
GrPaint paint; |
paint.addColorProcessor(fp)->unref(); |
- context->drawNonAARectToRect(dst->asRenderTarget(), clip, paint, SkMatrix::I(), |
- dstRect, srcRect); |
+ drawContext->drawNonAARectToRect(dst->asRenderTarget(), clip, paint, SkMatrix::I(), |
+ dstRect, srcRect); |
} |
bool SkLightingImageFilterInternal::filterImageGPU(Proxy* proxy, |
@@ -388,19 +389,26 @@ bool SkLightingImageFilterInternal::filterImageGPU(Proxy* proxy, |
SkRect bottomLeft = SkRect::MakeXYWH(0, dstRect.height() - 1, 1, 1); |
SkRect bottom = SkRect::MakeXYWH(1, dstRect.height() - 1, dstRect.width() - 2, 1); |
SkRect bottomRight = SkRect::MakeXYWH(dstRect.width() - 1, dstRect.height() - 1, 1, 1); |
- this->drawRect(context, srcTexture, dst, matrix, clip, topLeft, kTopLeft_BoundaryMode, bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, top, kTop_BoundaryMode, bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, topRight, kTopRight_BoundaryMode, |
+ |
+ GrDrawContext* drawContext = context->drawContext(); |
+ if (!drawContext) { |
+ return false; |
+ } |
+ |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, topLeft, kTopLeft_BoundaryMode, |
bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, left, kLeft_BoundaryMode, bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, interior, kInterior_BoundaryMode, |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, top, kTop_BoundaryMode, bounds); |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, topRight, kTopRight_BoundaryMode, |
bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, right, kRight_BoundaryMode, bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, bottomLeft, kBottomLeft_BoundaryMode, |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, left, kLeft_BoundaryMode, bounds); |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, interior, kInterior_BoundaryMode, |
bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, bottom, kBottom_BoundaryMode, bounds); |
- this->drawRect(context, srcTexture, dst, matrix, clip, bottomRight, kBottomRight_BoundaryMode, |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, right, kRight_BoundaryMode, bounds); |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, bottomLeft, kBottomLeft_BoundaryMode, |
bounds); |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, bottom, kBottom_BoundaryMode, bounds); |
+ this->drawRect(drawContext, srcTexture, dst, matrix, clip, bottomRight, |
+ kBottomRight_BoundaryMode, bounds); |
WrapTexture(dst, bounds.width(), bounds.height(), result); |
return true; |
} |