diff options
Diffstat (limited to 'samplecode/SampleApp.cpp')
| -rw-r--r-- | samplecode/SampleApp.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index 1aac794ddd..9d5ea0bf5e 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -43,6 +43,9 @@ #include "SkCGUtils.h" #endif +#define PICTURE_MEANS_PIPE false +#define SERIALIZE_PICTURE true + #if SK_SUPPORT_GPU # include "gl/GrGLInterface.h" # include "gl/GrGLUtil.h" @@ -1362,10 +1365,13 @@ SkCanvas* SampleWindow::beforeChildren(SkCanvas* canvas) { } else if (fSaveToSKP) { canvas = fRecorder.beginRecording(9999, 9999, nullptr, 0); } else if (fUsePicture) { - fPipeStream.reset(new SkDynamicMemoryWStream); - canvas = fPipeSerializer.beginWrite(SkRect::MakeWH(this->width(), this->height()), - fPipeStream.get()); -// canvas = fRecorder.beginRecording(9999, 9999, nullptr, 0); + if (PICTURE_MEANS_PIPE) { + fPipeStream.reset(new SkDynamicMemoryWStream); + canvas = fPipeSerializer.beginWrite(SkRect::MakeWH(this->width(), this->height()), + fPipeStream.get()); + } else { + canvas = fRecorder.beginRecording(9999, 9999, nullptr, 0); + } } else { canvas = this->INHERITED::beforeChildren(canvas); } @@ -1427,13 +1433,17 @@ void SampleWindow::afterChildren(SkCanvas* orig) { } if (fUsePicture) { - if (true) { + if (PICTURE_MEANS_PIPE) { fPipeSerializer.endWrite(); sk_sp<SkData> data(fPipeStream->detachAsData()); fPipeDeserializer.playback(data->data(), data->size(), orig); fPipeStream.reset(); } else { sk_sp<SkPicture> picture(fRecorder.finishRecordingAsPicture()); + if (SERIALIZE_PICTURE) { + auto data = picture->serialize(); + picture = SkPicture::MakeFromData(data.get(), nullptr); + } orig->drawPicture(picture.get()); } } |
