Chromium Code Reviews| Index: dm/DMSrcSink.cpp |
| diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp |
| index b44f1d78180e94e9d9f5505789024e5db42c4007..7e38b87f1ac9e4c29dd952ec06c2f4f7939dd144 100644 |
| --- a/dm/DMSrcSink.cpp |
| +++ b/dm/DMSrcSink.cpp |
| @@ -1,7 +1,9 @@ |
| #include "DMSrcSink.h" |
| #include "SamplePipeControllers.h" |
| #include "SkCommonFlags.h" |
| +#include "SkData.h" |
| #include "SkDocument.h" |
| +#include "SkImageGenerator.h" |
| #include "SkMultiPictureDraw.h" |
| #include "SkNullCanvas.h" |
| #include "SkOSFile.h" |
| @@ -108,13 +110,19 @@ Name ImageSrc::name() const { |
| static const SkRect kSKPViewport = {0,0, 1000,1000}; |
| SKPSrc::SKPSrc(Path path) : fPath(path) {} |
| +namespace { |
| +bool lazy_decode_bitmap(const void* src, size_t size, SkBitmap* dst) { |
|
mtklein
2015/02/23 17:01:10
static instead?
hal.canary
2015/02/23 18:16:35
Done.
|
| + SkAutoTUnref<SkData> encoded(SkData::NewWithCopy(src, size)); |
| + return encoded.get() ? SkInstallDiscardablePixelRef(encoded, dst) : false; |
| +} |
| +} // namespace |
| Error SKPSrc::draw(SkCanvas* canvas) const { |
| SkAutoTDelete<SkStream> stream(SkStream::NewFromFile(fPath.c_str())); |
| if (!stream) { |
| return SkStringPrintf("Couldn't read %s.", fPath.c_str()); |
| } |
| - SkAutoTUnref<SkPicture> pic(SkPicture::CreateFromStream(stream)); |
| + SkAutoTUnref<SkPicture> pic(SkPicture::CreateFromStream(stream, &lazy_decode_bitmap)); |
| if (!pic) { |
| return SkStringPrintf("Couldn't decode %s as a picture.", fPath.c_str()); |
| } |