From b36d4fcd239abf45bd1bbe199069dfb0fc5da5b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danilo=20B=C3=BCrger?= Date: Sat, 2 Apr 2022 16:17:30 +0200 Subject: [PATCH] Allow modifying ios image cache limits --- Libraries/Image/RCTImageCache.h | 3 +++ Libraries/Image/RCTImageCache.m | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Libraries/Image/RCTImageCache.h b/Libraries/Image/RCTImageCache.h index 9425e9c405dc..b85de924e221 100644 --- a/Libraries/Image/RCTImageCache.h +++ b/Libraries/Image/RCTImageCache.h @@ -39,4 +39,7 @@ @end @interface RCTImageCache : NSObject + +RCT_EXTERN void RCTSetImageCacheLimits(NSUInteger maxCachableDecodedImageSizeInBytes, NSUInteger imageCacheTotalCostLimit); + @end diff --git a/Libraries/Image/RCTImageCache.m b/Libraries/Image/RCTImageCache.m index 86a86c1848a6..76e28cf947de 100644 --- a/Libraries/Image/RCTImageCache.m +++ b/Libraries/Image/RCTImageCache.m @@ -18,7 +18,13 @@ #import -static const NSUInteger RCTMaxCachableDecodedImageSizeInBytes = 2097152; // 2 MB +static NSUInteger RCTMaxCachableDecodedImageSizeInBytes = 2*1024*1024; +static NSUInteger RCTImageCacheTotalCostLimit = 20*1024*1024; + +void RCTSetImageCacheLimits(NSUInteger maxCachableDecodedImageSizeInBytes, NSUInteger imageCacheTotalCostLimit) { + RCTMaxCachableDecodedImageSizeInBytes = maxCachableDecodedImageSizeInBytes; + RCTImageCacheTotalCostLimit = imageCacheTotalCostLimit; +} static NSString *RCTCacheKeyForImage(NSString *imageTag, CGSize size, CGFloat scale, RCTResizeMode resizeMode) @@ -38,7 +44,7 @@ - (instancetype)init { if (self = [super init]) { _decodedImageCache = [NSCache new]; - _decodedImageCache.totalCostLimit = 20 * 1024 * 1024; // 20 MB + _decodedImageCache.totalCostLimit = RCTImageCacheTotalCostLimit; _cacheStaleTimes = [NSMutableDictionary new]; [[NSNotificationCenter defaultCenter] addObserver:self