From fb2d58da6adc1263e3d286b6f0258abe2550b5ea Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 12 Oct 2019 18:10:12 -0700 Subject: [PATCH] Fix default resolution not taking effect on tvOS --- Limelight/Database/TemporarySettings.m | 49 ++++++++++++++------------ 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/Limelight/Database/TemporarySettings.m b/Limelight/Database/TemporarySettings.m index 63d3d2c..6374b60 100644 --- a/Limelight/Database/TemporarySettings.m +++ b/Limelight/Database/TemporarySettings.m @@ -17,26 +17,28 @@ self.parent = settings; #if TARGET_OS_TV - NSInteger _bitrate = [[NSUserDefaults standardUserDefaults] integerForKey:@"bitrate"]; - NSInteger _framerate = [[NSUserDefaults standardUserDefaults] integerForKey:@"framerate"]; - - if (_bitrate) { - self.bitrate = [NSNumber numberWithInteger:_bitrate]; - } else { - self.bitrate = [NSNumber numberWithInteger:20000]; + // Apply default values from our Root.plist + NSString* settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"]; + NSDictionary* settingsData = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]]; + NSArray* preferences = [settingsData objectForKey:@"PreferenceSpecifiers"]; + NSMutableDictionary* defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]]; + for (NSDictionary* prefSpecification in preferences) { + NSString* key = [prefSpecification objectForKey:@"Key"]; + if (key != nil) { + [defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key]; + } } - - if (_framerate) { - self.framerate = [NSNumber numberWithInteger:_framerate]; - } else { - self.framerate = [NSNumber numberWithInteger:60]; - } - - self.useHevc = [[NSUserDefaults standardUserDefaults] boolForKey:@"useHevc"] || NO; - self.playAudioOnPC = [[NSUserDefaults standardUserDefaults] boolForKey:@"audioOnPC"] || NO; - self.enableHdr = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableHdr"] || NO; - self.optimizeGames = [[NSUserDefaults standardUserDefaults] boolForKey:@"optimizeGames"] || YES; - self.multiController = [[NSUserDefaults standardUserDefaults] boolForKey:@"multipleControllers"] || YES; + [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister]; + + self.bitrate = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"bitrate"]]; + assert(self.bitrate); + self.framerate = [NSNumber numberWithInteger:[[NSUserDefaults standardUserDefaults] integerForKey:@"framerate"]]; + assert(self.framerate); + self.useHevc = [[NSUserDefaults standardUserDefaults] boolForKey:@"useHevc"]; + self.playAudioOnPC = [[NSUserDefaults standardUserDefaults] boolForKey:@"audioOnPC"]; + self.enableHdr = [[NSUserDefaults standardUserDefaults] boolForKey:@"enableHdr"]; + self.optimizeGames = [[NSUserDefaults standardUserDefaults] boolForKey:@"optimizeGames"]; + self.multiController = [[NSUserDefaults standardUserDefaults] boolForKey:@"multipleControllers"]; NSInteger _screenSize = [[NSUserDefaults standardUserDefaults] integerForKey:@"streamResolution"]; switch (_screenSize) { @@ -44,15 +46,16 @@ self.height = [NSNumber numberWithInteger:720]; self.width = [NSNumber numberWithInteger:1280]; break; + case 1: + self.height = [NSNumber numberWithInteger:1080]; + self.width = [NSNumber numberWithInteger:1920]; + break; case 2: self.height = [NSNumber numberWithInteger:2160]; self.width = [NSNumber numberWithInteger:3840]; break; - case 1: default: - self.height = [NSNumber numberWithInteger:1080]; - self.width = [NSNumber numberWithInteger:1920]; - break; + abort(); } self.onscreenControls = [NSNumber numberWithInteger:OnScreenControlsLevelOff]; #else