allow programmatic setting of config where defaults don't exist

This commit is contained in:
Richard Frith-Macdonald 2019-04-16 12:23:28 +01:00
parent 42e7c87f0b
commit 94eb232b96

View file

@ -617,33 +617,58 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
- (void) setLifetime: (unsigned)max
{
[my->lock lock];
if (NO == my->useDefaults)
if (YES == my->useDefaults)
{
my->lifetime = max;
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSString *n = (nil == my->name) ? @"" : my->name;
NSString *k = [@"GSCacheLifetime" stringByAppendingString: n];
if (nil != [defs objectForKey: k])
{
max = (unsigned) [defs integerForKey: k];
}
}
my->lifetime = max;
[my->lock unlock];
}
- (void) setMaxObjects: (unsigned)max
{
[my->lock lock];
if (NO == my->useDefaults)
if (YES == my->useDefaults)
{
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSString *n = (nil == my->name) ? @"" : my->name;
NSString *k = [@"GSCacheMaxObjects" stringByAppendingString: n];
if (nil != [defs objectForKey: k])
{
max = (unsigned) [defs integerForKey: k];
}
}
my->maxObjects = max;
if (my->currentObjects > my->maxObjects)
{
[self shrinkObjects: my->maxObjects
andSize: my->maxSize];
}
}
[my->lock unlock];
}
- (void) setMaxSize: (NSUInteger)max
{
[my->lock lock];
if (NO == my->useDefaults)
if (YES == my->useDefaults)
{
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSString *n = (nil == my->name) ? @"" : my->name;
NSString *k = [@"GSCacheMaxSize" stringByAppendingString: n];
if (nil != [defs objectForKey: k])
{
max = (NSUInteger) [defs integerForKey: k];
}
}
if (max > 0 && my->maxSize == 0)
{
NSMapEnumerator e = NSEnumerateMapTable(my->contents);
@ -689,7 +714,6 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
[self shrinkObjects: my->maxObjects
andSize: my->maxSize];
}
}
[my->lock unlock];
}