Chromium Code Reviews| Index: src/images/SkImageDecoder.cpp |
| diff --git a/src/images/SkImageDecoder.cpp b/src/images/SkImageDecoder.cpp |
| index 5d94bb1c2db97efd618320213210ef91ee363329..9b8ae726acb26938d605244b0ccf34e8debe2fa7 100644 |
| --- a/src/images/SkImageDecoder.cpp |
| +++ b/src/images/SkImageDecoder.cpp |
| @@ -8,12 +8,16 @@ |
| #include "SkImageDecoder.h" |
| #include "SkBitmap.h" |
| +#include "SkData.h" |
| +#include "SkForceLinking.h" |
| #include "SkImagePriv.h" |
| #include "SkPixelRef.h" |
| #include "SkStream.h" |
| #include "SkTemplates.h" |
| #include "SkCanvas.h" |
| +__SK_FORCE_IMAGE_DECODER_LINKING; |
|
scroggo
2013/07/15 15:09:28
If we move __SK_FORCE_IMAGE_DECODER_LINKING here,
|
| + |
| SK_DEFINE_INST_COUNT(SkImageDecoder::Peeker) |
| SK_DEFINE_INST_COUNT(SkImageDecoder::Chooser) |
| SK_DEFINE_INST_COUNT(SkImageDecoderFactory) |
| @@ -280,6 +284,22 @@ bool SkImageDecoder::DecodeFile(const char file[], SkBitmap* bm, |
| return false; |
| } |
| +SkLruImageCache SkImageDecoder::fLruImageCache(1024*1024); |
|
sglez
2013/07/13 04:11:27
Leon, why 1024^2? I copied this from what you have
scroggo
2013/07/15 15:09:28
This was arbitrary. I may have based it off of a n
|
| +SkBitmapFactory SkImageDecoder::fLazyBitmapFactory(&SkImageDecoder::DecodeMemoryToTarget); |
| + |
| +bool SkImageDecoder::LazyDecodeBitmap(const void* buffer, size_t size, SkBitmap* bitmap) { |
| + void* copiedBuffer = sk_malloc_throw(size); |
| + memcpy(copiedBuffer, buffer, size); |
| + SkAutoDataUnref data(SkData::NewFromMalloc(copiedBuffer, size)); |
| + |
| + static bool gOnce; |
| + if (!gOnce) { |
|
scroggo
2013/07/15 15:09:28
This is not threadsafe. In its current use in our
|
| + fLazyBitmapFactory.setImageCache(&fLruImageCache); |
| + gOnce = true; |
| + } |
| + return fLazyBitmapFactory.installPixelRef(data, bitmap); |
| +} |
| + |
| bool SkImageDecoder::DecodeMemory(const void* buffer, size_t size, SkBitmap* bm, |
| SkBitmap::Config pref, Mode mode, Format* format) { |
| if (0 == size) { |