Chromium Code Reviews| Index: src/core/SkCanvas.cpp |
| =================================================================== |
| --- src/core/SkCanvas.cpp (revision 10709) |
| +++ src/core/SkCanvas.cpp (working copy) |
| @@ -720,8 +720,9 @@ |
| newTop->fNext = fMCRec; |
| fMCRec = newTop; |
| - fClipStack.save(); |
| - SkASSERT(fClipStack.getSaveCount() == this->getSaveCount() - 1); |
| + if (SkCanvas::kClip_SaveFlag & flags) { |
| + fClipStack.save(); |
| + } |
| return saveCount; |
| } |
| @@ -896,7 +897,8 @@ |
| fDeviceCMDirty = true; |
| fLocalBoundsCompareTypeDirty = true; |
| - fClipStack.restore(); |
| + SkRasterClip* oldRasterClip = fMCRec->fRasterClip; |
| + |
| // reserve our layer (if any) |
| DeviceCM* layer = fMCRec->fLayer; // may be null |
| // now detach it from fMCRec so we can pop(). Gets freed after its drawn |
| @@ -907,6 +909,10 @@ |
| fMCStack.pop_back(); |
| fMCRec = (MCRec*)fMCStack.back(); |
| + if (NULL == fMCRec || fMCRec->fRasterClip != oldRasterClip) { |
|
bsalomon
2013/08/14 15:49:13
eek.. don't we want to stop computing raster clip
robertphillips
2013/08/14 16:16:58
That is the problem.
reed1
2013/08/14 16:51:31
If we pass the flags (or a subset of them) to clip
robertphillips
2013/08/14 17:00:16
So a ClipStack frame would store the number of res
bsalomon
2013/08/14 18:23:28
yeah I don't see why clip stack should see saves t
|
| + fClipStack.restore(); |
| + } |
| + |
| /* Time to draw the layer's offscreen. We can't call the public drawSprite, |
| since if we're being recorded, we don't want to record this (the |
| recorder will have already recorded the restore). |