diff --git a/Libraries/Image/RCTImageCache.h b/Libraries/Image/RCTImageCache.h index 9425e9c405dc7a..b85de924e221ad 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 86a86c1848a643..76e28cf947de08 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