| Index: bench/DecodingBench.cpp
|
| diff --git a/bench/DecodingBench.cpp b/bench/DecodingBench.cpp
|
| index c8490ca7a89cf2d91fa8f5aa0b4866d3ee5b18cd..31796565d46cac19cda5a77ed27a6641d78f304c 100644
|
| --- a/bench/DecodingBench.cpp
|
| +++ b/bench/DecodingBench.cpp
|
| @@ -41,7 +41,11 @@ DecodingBench::DecodingBench(SkString path, SkColorType colorType)
|
| // Perform setup for the decode
|
| SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(path.c_str()));
|
| fStream.reset(new SkMemoryStream(encoded));
|
| - fDecoder.reset(SkImageDecoder::Factory(fStream.get()));
|
| +#ifdef SK_DEBUG
|
| + // Ensure that we can create a decoder.
|
| + SkAutoTDelete<SkImageDecoder> decoder(SkImageDecoder::Factory(fStream.get()));
|
| + SkASSERT(decoder != NULL);
|
| +#endif
|
| }
|
|
|
| const char* DecodingBench::onGetName() {
|
| @@ -54,9 +58,13 @@ bool DecodingBench::isSuitableFor(Backend backend) {
|
|
|
| void DecodingBench::onDraw(const int n, SkCanvas* canvas) {
|
| SkBitmap bitmap;
|
| + SkAutoTDelete<SkImageDecoder> decoder;
|
| + SkAutoTDelete<SkStreamRewindable> stream;
|
| for (int i = 0; i < n; i++) {
|
| - fStream->rewind();
|
| - fDecoder->decode(fStream, &bitmap, fColorType,
|
| - SkImageDecoder::kDecodePixels_Mode);
|
| + // duplicate the stream and create a new decoder to mimic the behavior of CodecBench.
|
| + stream.reset(fStream->duplicate());
|
| + decoder.reset(SkImageDecoder::Factory(stream));
|
| + decoder->decode(stream, &bitmap, fColorType,
|
| + SkImageDecoder::kDecodePixels_Mode);
|
| }
|
| }
|
|
|