diff options
author | 2014-12-10 10:29:19 -0800 | |
---|---|---|
committer | 2014-12-10 10:29:19 -0800 | |
commit | cc695fee81613dc92746c1c6bb27f45cfc6ce73e (patch) | |
tree | 965f9657a0abd991f114f25369c527bddd98b8f1 /src/effects/gradients/SkTwoPointConicalGradient.cpp | |
parent | 6cfce1b7b4ad546b02823a1a0bbbda2c17b688f5 (diff) |
Gradient shaders: make fPtsToUnit const, pre-cache getType().
This prevents races when calling fPtsToUnit.getType() from multiple threads.
This introduces a small amount of redundant code in SkTwoPointRadialGradient,
but it's probably optimized together into no extra run-time work.
BUG=437511
Review URL: https://codereview.chromium.org/793763003
Diffstat (limited to 'src/effects/gradients/SkTwoPointConicalGradient.cpp')
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient.cpp | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp index 2fc848e109..94751a89c6 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp @@ -186,18 +186,13 @@ static void twopoint_mirror(TwoPtRadialContext* rec, SkPMColor* SK_RESTRICT dstC } } -void SkTwoPointConicalGradient::init() { - fRec.init(fCenter1, fRadius1, fCenter2, fRadius2, fFlippedGrad); - fPtsToUnit.reset(); -} - ///////////////////////////////////////////////////////////////////// SkTwoPointConicalGradient::SkTwoPointConicalGradient( const SkPoint& start, SkScalar startRadius, const SkPoint& end, SkScalar endRadius, bool flippedGrad, const Descriptor& desc) - : SkGradientShaderBase(desc) + : SkGradientShaderBase(desc, SkMatrix::I()) , fCenter1(start) , fCenter2(end) , fRadius1(startRadius) @@ -206,7 +201,7 @@ SkTwoPointConicalGradient::SkTwoPointConicalGradient( { // this is degenerate, and should be caught by our caller SkASSERT(fCenter1 != fCenter2 || fRadius1 != fRadius2); - this->init(); + fRec.init(fCenter1, fRadius1, fCenter2, fRadius2, fFlippedGrad); } bool SkTwoPointConicalGradient::isOpaque() const { |