* init, load, persist, sync, clear * clean up frequent disk syncs which impacted iOS performance * insert disk sync into various iOS/OS X lifecycle events * implement clear * implement save on iOS * cleaner dictionary syntax
This commit is contained in:
@@ -14,8 +14,9 @@ namespace llmr
|
||||
{
|
||||
public:
|
||||
Settings_iOS();
|
||||
virtual void save();
|
||||
virtual void load();
|
||||
virtual void persist();
|
||||
virtual void sync();
|
||||
virtual void clear();
|
||||
};
|
||||
}
|
||||
@@ -12,57 +12,41 @@
|
||||
|
||||
using namespace llmr;
|
||||
|
||||
Settings_iOS::Settings_iOS() {
|
||||
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
|
||||
// position
|
||||
[NSNumber numberWithDouble:longitude], @"longitude",
|
||||
[NSNumber numberWithDouble:latitude], @"latitude",
|
||||
[NSNumber numberWithDouble:scale], @"scale",
|
||||
[NSNumber numberWithDouble:angle], @"angle",
|
||||
|
||||
// debug
|
||||
[NSNumber numberWithBool:debug], @"debug",
|
||||
|
||||
nil
|
||||
];
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
|
||||
Settings_iOS::Settings_iOS()
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"longitude" : @(longitude),
|
||||
@"latitude" : @(latitude),
|
||||
@"scale" : @(scale),
|
||||
@"angle" : @(angle),
|
||||
@"debug" : @(debug) }];
|
||||
}
|
||||
|
||||
void Settings_iOS::load() {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
void Settings_iOS::load()
|
||||
{
|
||||
NSDictionary *settings = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation];
|
||||
|
||||
// position
|
||||
longitude = [defaults doubleForKey:@"longitude"];
|
||||
latitude = [defaults doubleForKey:@"latitude"];
|
||||
scale = [defaults doubleForKey:@"scale"];
|
||||
angle = [defaults doubleForKey:@"angle"];
|
||||
|
||||
// debug
|
||||
debug = [defaults boolForKey:@"debug"];
|
||||
longitude = [settings[@"longitude"] doubleValue];
|
||||
latitude = [settings[@"latitude"] doubleValue];
|
||||
scale = [settings[@"scale"] doubleValue];
|
||||
angle = [settings[@"angle"] doubleValue];
|
||||
debug = [settings[@"debug"] boolValue];
|
||||
}
|
||||
|
||||
void Settings_iOS::save() {
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
|
||||
// position
|
||||
[NSNumber numberWithDouble:longitude], @"longitude",
|
||||
[NSNumber numberWithDouble:latitude], @"latitude",
|
||||
[NSNumber numberWithDouble:scale], @"scale",
|
||||
[NSNumber numberWithDouble:angle], @"angle",
|
||||
|
||||
// debug
|
||||
[NSNumber numberWithBool:debug], @"debug",
|
||||
|
||||
nil
|
||||
];
|
||||
// [defaults setPersistentDomain:appDefaults forName:[[NSBundle mainBundle] bundleIdentifier]];
|
||||
|
||||
// [defaults synchronize];
|
||||
void Settings_iOS::persist()
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] setValuesForKeysWithDictionary:@{ @"longitude" : @(longitude),
|
||||
@"latitude" : @(latitude),
|
||||
@"scale" : @(scale),
|
||||
@"angle" : @(angle),
|
||||
@"debug" : @(debug) }];
|
||||
}
|
||||
|
||||
void Settings_iOS::clear() {
|
||||
void Settings_iOS::sync()
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] synchronize];
|
||||
}
|
||||
|
||||
void Settings_iOS::clear()
|
||||
{
|
||||
[NSUserDefaults resetStandardUserDefaults];
|
||||
}
|
||||
@@ -139,6 +139,11 @@ class MBXMapView
|
||||
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
mapView->settings.sync();
|
||||
}
|
||||
|
||||
- (void)updateRender:(NSNotification *)notification
|
||||
{
|
||||
[self updateRender];
|
||||
@@ -165,6 +170,8 @@ class MBXMapView
|
||||
- (void)pauseRender
|
||||
{
|
||||
displayLink.paused = YES;
|
||||
|
||||
mapView->settings.sync();
|
||||
}
|
||||
|
||||
- (void)render:(id)sender
|
||||
|
||||
Reference in New Issue
Block a user