-/* xscreensaver, Copyright (c) 2006-2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2015 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
{
NSObject *obj = (NSObject *)
CFPreferencesCopyAppValue ((CFStringRef) key, (CFStringRef) domain);
- if (!obj && defaults)
+ if (obj)
+ [obj autorelease];
+ else if (defaults)
obj = [defaults objectForKey:key];
return obj;
}
initialValues:defsdict];
globalDefaultsController =
[[NSUserDefaultsController alloc] initWithDefaults:globalDefaults
- initialValues:defsdict];
+ initialValues:UPDATER_DEFAULTS];
# else // USE_IPHONE
userDefaultsController = [userDefaults retain];
globalDefaultsController = [userDefaults retain];
- (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;
}