Index: src/core/SkPictureShader.cpp |
diff --git a/src/core/SkPictureShader.cpp b/src/core/SkPictureShader.cpp |
index 6ea67f8035692f75edc2f27763130bcf84a73ad9..1eaa6affb2858461fe4c9952466de5322efe79f2 100644 |
--- a/src/core/SkPictureShader.cpp |
+++ b/src/core/SkPictureShader.cpp |
@@ -25,12 +25,13 @@ SkPictureShader::SkPictureShader(const SkPicture* picture, TileMode tmx, TileMod |
, fTmx(tmx) |
, fTmy(tmy) { } |
-SkPictureShader::SkPictureShader(SkReadBuffer& buffer) |
- : INHERITED(buffer) { |
+#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
+SkPictureShader::SkPictureShader(SkReadBuffer& buffer) : INHERITED(buffer) { |
fTmx = static_cast<SkShader::TileMode>(buffer.read32()); |
fTmy = static_cast<SkShader::TileMode>(buffer.read32()); |
fPicture = SkPicture::CreateFromBuffer(buffer); |
} |
+#endif |
SkPictureShader::~SkPictureShader() { |
fPicture->unref(); |
@@ -44,9 +45,17 @@ SkPictureShader* SkPictureShader::Create(const SkPicture* picture, TileMode tmx, |
return SkNEW_ARGS(SkPictureShader, (picture, tmx, tmy, localMatrix)); |
} |
-void SkPictureShader::flatten(SkWriteBuffer& buffer) const { |
- this->INHERITED::flatten(buffer); |
+SkFlattenable* SkPictureShader::CreateProc(SkReadBuffer& buffer) { |
+ SkMatrix lm; |
+ buffer.readMatrix(&lm); |
+ TileMode mx = (TileMode)buffer.read32(); |
+ TileMode my = (TileMode)buffer.read32(); |
+ SkAutoTUnref<SkPicture> picture(SkPicture::CreateFromBuffer(buffer)); |
+ return SkPictureShader::Create(picture, mx, my, &lm); |
+} |
+void SkPictureShader::flatten(SkWriteBuffer& buffer) const { |
+ buffer.writeMatrix(this->getLocalMatrix()); |
buffer.write32(fTmx); |
buffer.write32(fTmy); |
fPicture->flatten(buffer); |