Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Unified Diff: dm/DMPDFTask.cpp

Issue 502193002: SkData to SkStreamAsset to avoid unneeded copying (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dm/DMPDFTask.cpp
diff --git a/dm/DMPDFTask.cpp b/dm/DMPDFTask.cpp
index 5fee403a5b9b5247fc18a58059c80848f1266c11..48919ba40b09545267ab53a3708acecaa21b33e8 100644
--- a/dm/DMPDFTask.cpp
+++ b/dm/DMPDFTask.cpp
@@ -50,11 +50,11 @@ public:
SkCanvas* canvas() { return fCanvas; }
- SkData* end() {
+ SkStreamAsset* end() {
fCanvas->flush();
fDocument->endPage();
fDocument->close();
- return fWriteStream.copyToData();
mtklein 2014/08/25 21:44:34 Is this the copy we're avoiding?
hal.canary 2014/08/26 15:20:50 Yes. copyToData() is O(N) while detachAsStream()
+ return fWriteStream.detachAsStream();
}
private:
@@ -66,7 +66,7 @@ private:
} // namespace
void PDFTask::draw() {
- SkAutoTUnref<SkData> pdfData;
+ SkAutoTUnref<SkStreamAsset> pdfData;
bool rasterize = true;
if (fGM.get()) {
rasterize = 0 == (fGM->getFlags() & skiagm::GM::kSkipPDFRasterization_Flag);
@@ -83,9 +83,10 @@ void PDFTask::draw() {
SkASSERT(pdfData.get());
if (rasterize) {
- this->spawnChild(SkNEW_ARGS(PDFRasterizeTask, (*this, pdfData.get(), fRasterize)));
+ this->spawnChild(SkNEW_ARGS(PDFRasterizeTask,
+ (*this, pdfData->duplicate(), fRasterize)));
}
- this->spawnChild(SkNEW_ARGS(WriteTask, (*this, pdfData.get(), ".pdf")));
+ this->spawnChild(SkNEW_ARGS(WriteTask, (*this, pdfData.detach(), ".pdf")));
mtklein 2014/08/25 21:44:33 What's the cost of duplicate()? It's weird one ki
hal.canary 2014/08/26 15:20:51 The duplicate is cheap. It's only a SkNEW SkBlock
mtklein 2014/08/26 15:30:54 Just to make it a little more consistent and resil
}
bool PDFTask::shouldSkip() const {
« dm/DMPDFRasterizeTask.h ('K') | « dm/DMPDFRasterizeTask.cpp ('k') | dm/DMWriteTask.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698