| Index: src/gpu/GrDefaultPathRenderer.cpp
|
| diff --git a/src/gpu/GrDefaultPathRenderer.cpp b/src/gpu/GrDefaultPathRenderer.cpp
|
| index 43809ed6a34b25cd586dbd35e62057e3cdeec9d4..87deb9c4068c418a7c0ab5bac4a64b9504dea3be 100644
|
| --- a/src/gpu/GrDefaultPathRenderer.cpp
|
| +++ b/src/gpu/GrDefaultPathRenderer.cpp
|
| @@ -445,7 +445,9 @@ bool GrDefaultPathRenderer::internalDrawPath(const SkPath& path,
|
| }
|
| }
|
|
|
| - {
|
| + SkRect devBounds;
|
| + GetPathDevBounds(path, drawState->getRenderTarget(), viewM, &devBounds);
|
| +
|
| for (int p = 0; p < passCount; ++p) {
|
| drawState->setDrawFace(drawFace[p]);
|
| if (NULL != passes[p]) {
|
| @@ -460,10 +462,8 @@ bool GrDefaultPathRenderer::internalDrawPath(const SkPath& path,
|
| GrDrawState::AutoDeviceCoordDraw adcd;
|
| if (reverse) {
|
| GrAssert(NULL != drawState->getRenderTarget());
|
| - // draw over the whole world.
|
| - bounds.setLTRB(0, 0,
|
| - SkIntToScalar(drawState->getRenderTarget()->width()),
|
| - SkIntToScalar(drawState->getRenderTarget()->height()));
|
| + // draw over the dev bounds (which will be the whole dst surface for inv fill).
|
| + bounds = devBounds;
|
| SkMatrix vmi;
|
| // mapRect through persp matrix may not be correct
|
| if (!drawState->getViewMatrix().hasPerspective() &&
|
| @@ -483,13 +483,12 @@ bool GrDefaultPathRenderer::internalDrawPath(const SkPath& path,
|
| }
|
| if (indexCnt) {
|
| target->drawIndexed(primType, 0, 0,
|
| - vertexCnt, indexCnt);
|
| + vertexCnt, indexCnt, &devBounds);
|
| } else {
|
| - target->drawNonIndexed(primType, 0, vertexCnt);
|
| + target->drawNonIndexed(primType, 0, vertexCnt, &devBounds);
|
| }
|
| }
|
| }
|
| - }
|
| return true;
|
| }
|
|
|
|
|