X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=OSX%2FPrefsReader.m;h=a1c4ed48e0625dc1f69aaa0f8cf4fad3a11e407c;hb=aa75c7476aeaa84cf3abc192b376a8b03c325213;hp=97c227d6669485aa9290cf696221be7815c12357;hpb=8afc01a67be4fbf3f1cc0fce9adf01b5289a21c6;p=xscreensaver diff --git a/OSX/PrefsReader.m b/OSX/PrefsReader.m index 97c227d6..a1c4ed48 100644 --- a/OSX/PrefsReader.m +++ b/OSX/PrefsReader.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2013 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2015 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -97,7 +97,9 @@ { NSObject *obj = (NSObject *) CFPreferencesCopyAppValue ((CFStringRef) key, (CFStringRef) domain); - if (!obj && defaults) + if (obj) + [obj autorelease]; + else if (defaults) obj = [defaults objectForKey:key]; return obj; } @@ -312,7 +314,7 @@ initialValues:defsdict]; globalDefaultsController = [[NSUserDefaultsController alloc] initWithDefaults:globalDefaults - initialValues:defsdict]; + initialValues:UPDATER_DEFAULTS]; # else // USE_IPHONE userDefaultsController = [userDefaults retain]; globalDefaultsController = [userDefaults retain]; @@ -411,24 +413,33 @@ - (NSObject *) getObjectResource: (const char *) name { - // First look in userDefaults, then in globalDefaults. - for (int globalp = 0; globalp <= 1; globalp++) { - const char *name2 = name; - while (1) { - NSString *key = [self makeCKey:name2]; - NSObject *obj = [(globalp ? globalDefaults : userDefaults) - objectForKey:key]; - if (obj) - return obj; - - // If key is "foo.bar.baz", check "foo.bar.baz", "bar.baz", and "baz". - // - const char *dot = strchr (name2, '.'); - if (dot && dot[1]) - name2 = dot + 1; - else - break; - } + // Only look in globalDefaults for updater preferences. + + static NSDictionary *updaterDefaults; + if (!updaterDefaults) { + updaterDefaults = UPDATER_DEFAULTS; + [updaterDefaults retain]; + } + + NSUserDefaults *defaults = + [updaterDefaults objectForKey:[NSString stringWithUTF8String:name]] ? + globalDefaults : + userDefaults; + + const char *name2 = name; + while (1) { + NSString *key = [self makeCKey:name2]; + NSObject *obj = [defaults objectForKey:key]; + if (obj) + return obj; + + // If key is "foo.bar.baz", check "foo.bar.baz", "bar.baz", and "baz". + // + const char *dot = strchr (name2, '.'); + if (dot && dot[1]) + name2 = dot + 1; + else + break; } return NULL; }