Index: src/gpu/GrClipMaskManager.cpp |
diff --git a/src/gpu/GrClipMaskManager.cpp b/src/gpu/GrClipMaskManager.cpp |
index 99c74e3c3f5d09133e1da6b667c9e6452e24e886..690c31acb6f6f3eefaa7e8c828a96f2b4d346575 100644 |
--- a/src/gpu/GrClipMaskManager.cpp |
+++ b/src/gpu/GrClipMaskManager.cpp |
@@ -30,10 +30,12 @@ typedef SkClipStack::Element Element; |
namespace { |
// set up the draw state to enable the aa clipping mask. Besides setting up the |
// stage matrix this also alters the vertex layout |
-void setup_drawstate_aaclip(const SkIRect &devBound, |
- GrPipelineBuilder* pipelineBuilder, |
- GrTexture* result) { |
- SkASSERT(pipelineBuilder); |
+void setup_drawstate_aaclip(GrPipelineBuilder* pipelineBuilder, |
+ GrTexture* result, |
+ GrPipelineBuilder::AutoRestoreEffects* are, |
+ const SkIRect &devBound) { |
+ SkASSERT(pipelineBuilder && are); |
+ are->set(pipelineBuilder); |
SkMatrix mat; |
// We use device coords to compute the texture coordinates. We set our matrix to be a |
@@ -169,7 +171,7 @@ bool GrClipMaskManager::installClipEffects(GrPipelineBuilder* pipelineBuilder, |
switch (iter.get()->getType()) { |
case SkClipStack::Element::kPath_Type: |
fp.reset(GrConvexPolyEffect::Create(edgeType, iter.get()->getPath(), |
- &clipToRTOffset)); |
+ &clipToRTOffset)); |
break; |
case SkClipStack::Element::kRRect_Type: { |
SkRRect rrect = iter.get()->getRRect(); |
@@ -331,11 +333,12 @@ bool GrClipMaskManager::setupClipping(GrPipelineBuilder* pipelineBuilder, |
} |
if (result) { |
+ are->set(pipelineBuilder); |
// The mask's top left coord should be pinned to the rounded-out top left corner of |
// clipSpace bounds. We determine the mask's position WRT to the render target here. |
SkIRect rtSpaceMaskBounds = clipSpaceIBounds; |
rtSpaceMaskBounds.offset(-clip.origin()); |
- setup_drawstate_aaclip(rtSpaceMaskBounds, pipelineBuilder, result); |
+ setup_drawstate_aaclip(pipelineBuilder, result, are, rtSpaceMaskBounds); |
this->setPipelineBuilderStencil(pipelineBuilder, ars); |
return true; |
} |