increase cache size if image is loaded that is larger than max size (#19352)
This commit is contained in:
parent
5d0d1b038f
commit
e4e8ab47a3
@ -145,6 +145,12 @@ class ImageCache {
|
||||
// Images that fail to load don't contribute to cache size.
|
||||
final int imageSize = info.image == null ? 0 : info.image.height * info.image.width * 4;
|
||||
final _CachedImage image = new _CachedImage(result, imageSize);
|
||||
// If the image is bigger than the maximum cache size, and the cache size
|
||||
// is not zero, then increase the cache size to the size of the image plus
|
||||
// some change.
|
||||
if (maximumSizeBytes > 0 && imageSize > maximumSizeBytes) {
|
||||
_maximumSizeBytes = imageSize + 1000;
|
||||
}
|
||||
_currentSizeBytes += imageSize;
|
||||
_pendingImages.remove(key);
|
||||
_cache[key] = image;
|
||||
|
@ -118,5 +118,15 @@ void main() {
|
||||
expect(imageCache.currentSize, 1);
|
||||
expect(imageCache.currentSizeBytes, 256);
|
||||
});
|
||||
|
||||
test('Increases cache size if an image is loaded that is larger then the maximum size', () async {
|
||||
const TestImage testImage = const TestImage(width: 8, height: 8);
|
||||
|
||||
imageCache.maximumSizeBytes = 1;
|
||||
await extractOneFrame(const TestImageProvider(1, 1, image: testImage).resolve(ImageConfiguration.empty));
|
||||
expect(imageCache.currentSize, 1);
|
||||
expect(imageCache.currentSizeBytes, 256);
|
||||
expect(imageCache.maximumSizeBytes, 256 + 1000);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user