pdfviewer: improve memory usage, improve parse time (by 30-50%) and don't allocate extra buffers (more to do, but low priority now), and put the page specific memory in an allocator.
Review URL: https://codereview.chromium.org/19793011
git-svn-id: http://skia.googlecode.com/svn/trunk@10282 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/PdfViewer/SkPdfFont.cpp b/experimental/PdfViewer/SkPdfFont.cpp
index 2574ce4..0fec460 100644
--- a/experimental/PdfViewer/SkPdfFont.cpp
+++ b/experimental/PdfViewer/SkPdfFont.cpp
@@ -164,12 +164,12 @@
}
}
- unsigned char* uncompressedStream = NULL;
+ const unsigned char* uncompressedStream = NULL;
size_t uncompressedStreamLength = 0;
// TODO(edisonn): report warning to be used in testing.
if (!pdfStream ||
- !pdfStream->GetFilteredStreamRef(&uncompressedStream, &uncompressedStreamLength, doc->allocator()) ||
+ !pdfStream->GetFilteredStreamRef(&uncompressedStream, &uncompressedStreamLength) ||
!uncompressedStream ||
!uncompressedStreamLength) {
return NULL;
@@ -321,7 +321,9 @@
fCMapEncodingFlag = NULL;
if (stream) {
- SkPdfNativeTokenizer* tokenizer = fParsed->tokenizerOfStream(stream);
+ // Since font will be cached, the font has to sit in the per doc allocator, not to be
+ // freed after the page is done drawing.
+ SkPdfNativeTokenizer* tokenizer = fParsed->tokenizerOfStream(stream, parsed->allocator());
PdfToken token;
fCMapEncoding = new unsigned short[256 * 256];