diff options
Diffstat (limited to 'src/shaders/gradients/SkRadialGradient.cpp')
-rw-r--r-- | src/shaders/gradients/SkRadialGradient.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/shaders/gradients/SkRadialGradient.cpp b/src/shaders/gradients/SkRadialGradient.cpp index 6d193615a4..3f71f38c1f 100644 --- a/src/shaders/gradients/SkRadialGradient.cpp +++ b/src/shaders/gradients/SkRadialGradient.cpp @@ -162,10 +162,19 @@ void GrRadialGradient::GLSLRadialProcessor::emitCode(EmitArgs& args) { std::unique_ptr<GrFragmentProcessor> SkRadialGradient::asFragmentProcessor( const GrFPArgs& args) const { + SkASSERT(args.fContext); + SkMatrix matrix; - if (!this->totalLocalMatrix(args.fPreLocalMatrix, args.fPostLocalMatrix)->invert(&matrix)) { + if (!this->getLocalMatrix().invert(&matrix)) { return nullptr; } + if (args.fLocalMatrix) { + SkMatrix inv; + if (!args.fLocalMatrix->invert(&inv)) { + return nullptr; + } + matrix.postConcat(inv); + } matrix.postConcat(fPtsToUnit); return GrRadialGradient::Make(GrGradientEffect::CreateArgs( |