diff options
Diffstat (limited to 'src/shaders/gradients/SkLinearGradient.cpp')
-rw-r--r-- | src/shaders/gradients/SkLinearGradient.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/shaders/gradients/SkLinearGradient.cpp b/src/shaders/gradients/SkLinearGradient.cpp index a377442dc4..b6436ca801 100644 --- a/src/shaders/gradients/SkLinearGradient.cpp +++ b/src/shaders/gradients/SkLinearGradient.cpp @@ -195,9 +195,16 @@ std::unique_ptr<GrFragmentProcessor> SkLinearGradient::asFragmentProcessor( 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 GrLinearGradient::Make(GrGradientEffect::CreateArgs( |