| Index: third_party/WebKit/Source/platform/graphics/ImageDecodingStore.h
|
| diff --git a/third_party/WebKit/Source/platform/graphics/ImageDecodingStore.h b/third_party/WebKit/Source/platform/graphics/ImageDecodingStore.h
|
| index 04ee218b7d00bf1695dca826e010a9ea0954aef0..66e011053802e4b389f463d807b712485540bbb0 100644
|
| --- a/third_party/WebKit/Source/platform/graphics/ImageDecodingStore.h
|
| +++ b/third_party/WebKit/Source/platform/graphics/ImageDecodingStore.h
|
| @@ -78,6 +78,7 @@ class PLATFORM_EXPORT ImageDecodingStore final {
|
| // found.
|
| bool LockDecoder(const ImageFrameGenerator*,
|
| const SkISize& scaled_size,
|
| + ImageDecoder::AlphaOption,
|
| ImageDecoder**);
|
| void UnlockDecoder(const ImageFrameGenerator*, const ImageDecoder*);
|
| void InsertDecoder(const ImageFrameGenerator*, std::unique_ptr<ImageDecoder>);
|
| @@ -96,7 +97,9 @@ class PLATFORM_EXPORT ImageDecodingStore final {
|
| // Decoder cache entry is identified by:
|
| // 1. Pointer to ImageFrameGenerator.
|
| // 2. Size of the image.
|
| - typedef std::pair<const ImageFrameGenerator*, SkISize> DecoderCacheKey;
|
| + // 3. ImageDecoder::AlphaOption
|
| + typedef std::tuple<const ImageFrameGenerator*, SkISize, uint8_t>
|
| + DecoderCacheKey;
|
|
|
| // Base class for all cache entries.
|
| class CacheEntry : public DoublyLinkedListNode<CacheEntry> {
|
| @@ -145,35 +148,43 @@ class PLATFORM_EXPORT ImageDecodingStore final {
|
| new DecoderCacheEntry(generator, 0, std::move(decoder)));
|
| }
|
|
|
| - DecoderCacheEntry(const ImageFrameGenerator* generator,
|
| - int count,
|
| - std::unique_ptr<ImageDecoder> decoder)
|
| - : CacheEntry(generator, count),
|
| - cached_decoder_(std::move(decoder)),
|
| - size_(SkISize::Make(cached_decoder_->DecodedSize().Width(),
|
| - cached_decoder_->DecodedSize().Height())) {}
|
| -
|
| size_t MemoryUsageInBytes() const override {
|
| return size_.width() * size_.height() * 4;
|
| }
|
| CacheType GetType() const override { return kTypeDecoder; }
|
|
|
| - static DecoderCacheKey MakeCacheKey(const ImageFrameGenerator* generator,
|
| - const SkISize& size) {
|
| - return std::make_pair(generator, size);
|
| + static DecoderCacheKey MakeCacheKey(
|
| + const ImageFrameGenerator* generator,
|
| + const SkISize& size,
|
| + ImageDecoder::AlphaOption alpha_option) {
|
| + return std::make_tuple(generator, size,
|
| + static_cast<uint8_t>(alpha_option));
|
| }
|
| static DecoderCacheKey MakeCacheKey(const ImageFrameGenerator* generator,
|
| const ImageDecoder* decoder) {
|
| - return std::make_pair(generator,
|
| - SkISize::Make(decoder->DecodedSize().Width(),
|
| - decoder->DecodedSize().Height()));
|
| + return MakeCacheKey(generator,
|
| + SkISize::Make(decoder->DecodedSize().Width(),
|
| + decoder->DecodedSize().Height()),
|
| + decoder->AlphaOpt());
|
| + }
|
| + DecoderCacheKey CacheKey() const {
|
| + return MakeCacheKey(generator_, size_, alpha_option_);
|
| }
|
| - DecoderCacheKey CacheKey() const { return MakeCacheKey(generator_, size_); }
|
| ImageDecoder* CachedDecoder() const { return cached_decoder_.get(); }
|
|
|
| private:
|
| + DecoderCacheEntry(const ImageFrameGenerator* generator,
|
| + int count,
|
| + std::unique_ptr<ImageDecoder> decoder)
|
| + : CacheEntry(generator, count),
|
| + cached_decoder_(std::move(decoder)),
|
| + size_(SkISize::Make(cached_decoder_->DecodedSize().Width(),
|
| + cached_decoder_->DecodedSize().Height())),
|
| + alpha_option_(cached_decoder_->AlphaOpt()) {}
|
| +
|
| std::unique_ptr<ImageDecoder> cached_decoder_;
|
| SkISize size_;
|
| + ImageDecoder::AlphaOption alpha_option_;
|
| };
|
|
|
| ImageDecodingStore();
|
|
|