Index: src/pipe/SkGPipeWrite.cpp |
diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp |
index 43209f644b9e64743d02f02e1e24800fe3959e55..146f49cf9cf75311e42b516db3683a6bb0efc147 100644 |
--- a/src/pipe/SkGPipeWrite.cpp |
+++ b/src/pipe/SkGPipeWrite.cpp |
@@ -229,10 +229,6 @@ |
} |
// overrides from SkCanvas |
- virtual int save(SaveFlags) SK_OVERRIDE; |
- virtual int saveLayer(const SkRect* bounds, const SkPaint*, |
- SaveFlags) SK_OVERRIDE; |
- virtual void restore() SK_OVERRIDE; |
virtual bool isDrawingToLayer() const SK_OVERRIDE; |
virtual bool translate(SkScalar dx, SkScalar dy) SK_OVERRIDE; |
virtual bool scale(SkScalar sx, SkScalar sy) SK_OVERRIDE; |
@@ -287,6 +283,10 @@ |
bool shuttleBitmap(const SkBitmap&, int32_t slot); |
protected: |
+ virtual void onSave(SaveFlags) SK_OVERRIDE; |
+ virtual bool onSaveLayer(const SkRect*, const SkPaint*, SaveFlags) SK_OVERRIDE; |
+ virtual void onRestore() SK_OVERRIDE; |
+ |
virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK_OVERRIDE; |
virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; |
@@ -514,16 +514,17 @@ |
#define NOTIFY_SETUP(canvas) \ |
AutoPipeNotify apn(canvas) |
-int SkGPipeCanvas::save(SaveFlags flags) { |
+void SkGPipeCanvas::onSave(SaveFlags flags) { |
NOTIFY_SETUP(this); |
if (this->needOpBytes()) { |
this->writeOp(kSave_DrawOp, 0, flags); |
} |
- return this->INHERITED::save(flags); |
-} |
- |
-int SkGPipeCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, |
- SaveFlags saveFlags) { |
+ |
+ this->INHERITED::onSave(flags); |
+} |
+ |
+bool SkGPipeCanvas::onSaveLayer(const SkRect* bounds, const SkPaint* paint, |
+ SaveFlags saveFlags) { |
NOTIFY_SETUP(this); |
size_t size = 0; |
unsigned opFlags = 0; |
@@ -547,21 +548,23 @@ |
if (kNoSaveLayer == fFirstSaveLayerStackLevel){ |
fFirstSaveLayerStackLevel = this->getSaveCount(); |
} |
- // we just pass on the save, so we don't create a layer |
- return this->INHERITED::save(saveFlags); |
-} |
- |
-void SkGPipeCanvas::restore() { |
+ |
+ this->INHERITED::onSaveLayer(bounds, paint, saveFlags); |
+ // we don't create a layer |
+ return false; |
+} |
+ |
+void SkGPipeCanvas::onRestore() { |
NOTIFY_SETUP(this); |
if (this->needOpBytes()) { |
this->writeOp(kRestore_DrawOp); |
} |
- this->INHERITED::restore(); |
- |
- if (this->getSaveCount() == fFirstSaveLayerStackLevel){ |
+ if (this->getSaveCount() - 1 == fFirstSaveLayerStackLevel){ |
fFirstSaveLayerStackLevel = kNoSaveLayer; |
} |
+ |
+ this->INHERITED::onRestore(); |
} |
bool SkGPipeCanvas::isDrawingToLayer() const { |