diff options
author | 2012-05-23 11:44:08 +0000 | |
---|---|---|
committer | 2012-05-23 11:44:08 +0000 | |
commit | 49d9fd5fdb9ffd48538c8fc5a2f6f2d43a2e4fe9 (patch) | |
tree | d9ac469c4bc3a933872276d3047d67b616efb507 /src/core/SkCanvas.cpp | |
parent | af46cff4ee6099cebf3aa395805748af7d193a31 (diff) |
Plumbing to propagate save & restore from SkCanvas down to GrContext & lower
http://codereview.appspot.com/6203067/
git-svn-id: http://skia.googlecode.com/svn/trunk@4034 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r-- | src/core/SkCanvas.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index f50728421a..af2e066b4f 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -700,6 +700,14 @@ int SkCanvas::internalSave(SaveFlags flags) { fClipStack.save(); SkASSERT(fClipStack.getSaveCount() == this->getSaveCount() - 1); + for (DeviceCM* curLayer = fMCRec->fTopLayer; + curLayer; + curLayer = curLayer->fNext) { + if (NULL != curLayer->fDevice) { + curLayer->fDevice->postSave(); + } + } + return saveCount; } @@ -870,6 +878,14 @@ void SkCanvas::restore() { void SkCanvas::internalRestore() { SkASSERT(fMCStack.count() != 0); + for (DeviceCM* curLayer = fMCRec->fTopLayer; + curLayer; + curLayer = curLayer->fNext) { + if (NULL != curLayer->fDevice) { + curLayer->fDevice->preRestore(); + } + } + fDeviceCMDirty = true; fLocalBoundsCompareTypeDirty = true; fLocalBoundsCompareTypeDirtyBW = true; |