Chromium Code Reviews| Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| index b660c660eb881bd73c788b7b7b1f43c765f20169..60b423a93182ca701f349c116c4708e9e5c16066 100644 |
| --- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| +++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.cpp |
| @@ -194,6 +194,22 @@ size_t ImageDecoder::clearCacheExceptFrame(size_t clearExceptFrame) |
| return frameBytesCleared; |
| } |
| +size_t ImageDecoder::clearCacheExceptFrames(const SizeTHashSet& clearExceptFrames) |
| +{ |
| + // Don't clear if there are no frames or only one frame. |
|
tomhudson
2016/01/12 16:15:59
This comment is backwards. It's nearly obvious fro
aleksandar.stojiljkovic
2016/01/12 17:34:59
Done.
|
| + if (m_frameBufferCache.size() <= 1) |
| + return 0; |
| + |
| + size_t frameBytesCleared = 0; |
| + for (size_t i = 0; i < m_frameBufferCache.size(); ++i) { |
| + if (m_frameBufferCache[i].status() != ImageFrame::FrameEmpty && !clearExceptFrames.contains(i)) { |
| + frameBytesCleared += frameBytesAtIndex(i); |
| + clearFrameBuffer(i); |
| + } |
| + } |
| + return frameBytesCleared; |
| +} |
| + |
| void ImageDecoder::clearFrameBuffer(size_t frameIndex) |
| { |
| m_frameBufferCache[frameIndex].clearPixelData(); |