diff --git a/Application/AppController.h b/Application/AppController.h
index f0fbb1540..74552e982 100644
--- a/Application/AppController.h
+++ b/Application/AppController.h
@@ -103,6 +103,9 @@
- (void)showPathSuggester;
+ (void)globalShowPathSuggester;
+- (IBAction)showRubberbandSettings:(id)sender;
+- (void)globalShowRubberbandSettings;
+
@property NSWindow *mainWindow;
@property NSWindow *miniWindow;
diff --git a/Application/AppController.m b/Application/AppController.m
index edfd81368..e2dff470a 100644
--- a/Application/AppController.m
+++ b/Application/AppController.m
@@ -11,6 +11,7 @@
#import "PlaylistEntry.h"
#import "PlaylistLoader.h"
#import "PlaylistView.h"
+#import "RubberbandEngineTransformer.h"
#import "SQLiteStore.h"
#import "SandboxBroker.h"
#import "SpotlightWindowController.h"
@@ -71,6 +72,14 @@ static AppController *kAppController = nil;
NSValueTransformer *numberHertzToStringTransformer = [[NumberHertzToStringTransformer alloc] init];
[NSValueTransformer setValueTransformer:numberHertzToStringTransformer
forName:@"NumberHertzToStringTransformer"];
+
+ NSValueTransformer *rubberbandEngineEnabledTransformer = [[RubberbandEngineEnabledTransformer alloc] init];
+ [NSValueTransformer setValueTransformer:rubberbandEngineEnabledTransformer
+ forName:@"RubberbandEngineEnabledTransformer"];
+
+ NSValueTransformer *rubberbandEngineHiddenTransformer = [[RubberbandEngineHiddenTransformer alloc] init];
+ [NSValueTransformer setValueTransformer:rubberbandEngineHiddenTransformer
+ forName:@"RubberbandEngineHiddenTransformer"];
}
- (id)init {
self = [super init];
@@ -801,4 +810,12 @@ static AppController *kAppController = nil;
[kAppController showPathSuggester];
}
+- (void)showRubberbandSettings:(id)sender {
+ [preferencesController showRubberbandSettings:sender];
+}
+
++ (void)globalShowRubberbandSettings {
+ [kAppController showRubberbandSettings:kAppController];
+}
+
@end
diff --git a/Application/PlaybackController.m b/Application/PlaybackController.m
index 96ed25614..cc2dfe0eb 100644
--- a/Application/PlaybackController.m
+++ b/Application/PlaybackController.m
@@ -100,7 +100,7 @@ NSString *CogPlaybackDidStopNotificiation = @"CogPlaybackDidStopNotificiation";
@"volumeLimit": @(YES),
@"enableHrtf": @(NO),
@"enableHeadTracking": @(NO),
- @"rubberbandEngine": @"faster",
+ /*@"rubberbandEngine": @"faster",*/
@"rubberbandTransients": @"crisp",
@"rubberbandDetector": @"compound",
@"rubberbandPhase": @"laminar",
diff --git a/Audio/Chain/DSP/DSPRubberbandNode.m b/Audio/Chain/DSP/DSPRubberbandNode.m
index da52fe809..67d4b10d4 100644
--- a/Audio/Chain/DSP/DSPRubberbandNode.m
+++ b/Audio/Chain/DSP/DSPRubberbandNode.m
@@ -16,6 +16,8 @@
static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
@implementation DSPRubberbandNode {
+ BOOL enableRubberband;
+
RubberBandState ts;
RubberBandOptions tslastoptions, tsnewoptions;
size_t blockSize, toDrop, samplesBuffered, tschannels;
@@ -44,6 +46,8 @@ static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
self = [super initWithController:c previous:p latency:latency];
if(self) {
NSUserDefaults *defaults = [[NSUserDefaultsController sharedUserDefaultsController] defaults];
+ enableRubberband = ![[defaults stringForKey:@"rubberbandEngine"] isEqualToString:@"disabled"];
+
pitch = [defaults doubleForKey:@"pitch"];
tempo = [defaults doubleForKey:@"tempo"];
@@ -106,7 +110,9 @@ static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
tempo = [defaults doubleForKey:@"tempo"];
tsapplynewoptions = YES;
} else if([[keyPath substringToIndex:17] isEqualToString:@"values.rubberband"]) {
- if(ts) {
+ NSUserDefaults *defaults = [[NSUserDefaultsController sharedUserDefaultsController] defaults];
+ enableRubberband = ![[defaults stringForKey:@"rubberbandEngine"] isEqualToString:@"disabled"];
+ if(enableRubberband && ts) {
RubberBandOptions options = [self getRubberbandOptions];
RubberBandOptions changed = options ^ tslastoptions;
if(changed) {
@@ -348,7 +354,9 @@ static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
[self writeChunk:chunk];
chunk = nil;
}
- if(tsrestartengine) {
+ if(!enableRubberband && ts) {
+ [self fullShutdown];
+ } else if(tsrestartengine) {
[self fullShutdown];
} else if(tsapplynewoptions) {
[self partialInit];
@@ -373,7 +381,8 @@ static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
return nil;
}
- if(!ts || memcmp(&inputFormat, &lastInputFormat, sizeof(inputFormat)) != 0 ||
+ if((enableRubberband && !ts) ||
+ memcmp(&inputFormat, &lastInputFormat, sizeof(inputFormat)) != 0 ||
inputChannelConfig != lastInputChannelConfig) {
lastInputFormat = inputFormat;
lastInputChannelConfig = inputChannelConfig;
@@ -384,6 +393,11 @@ static void * kDSPRubberbandNodeContext = &kDSPRubberbandNodeContext;
}
}
+ if(!ts) {
+ processEntered = NO;
+ return [self readChunk:4096];
+ }
+
size_t samplesToProcess = rubberband_get_samples_required(ts);
if(samplesToProcess > blockSize)
samplesToProcess = blockSize;
diff --git a/Base.lproj/MainMenu.xib b/Base.lproj/MainMenu.xib
index e4d3b903c..ff02fe14c 100644
--- a/Base.lproj/MainMenu.xib
+++ b/Base.lproj/MainMenu.xib
@@ -21,27 +21,27 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -54,11 +54,11 @@
-
+
-
+
@@ -95,7 +95,7 @@
-
+
@@ -127,7 +127,7 @@
-
+
@@ -141,11 +141,11 @@
-
+
-
+
@@ -171,7 +171,7 @@
-
+
@@ -185,11 +185,11 @@
-
+
-
+
@@ -259,7 +259,7 @@
-
+
@@ -273,11 +273,11 @@
-
+
-
+
@@ -347,7 +347,7 @@
-
+
@@ -361,11 +361,11 @@
-
+
-
+
@@ -391,7 +391,7 @@
-
+
@@ -404,11 +404,11 @@
-
+
-
+
@@ -435,7 +435,7 @@
-
+
@@ -448,11 +448,11 @@
-
+
-
+
@@ -475,7 +475,7 @@
-
+
@@ -489,11 +489,11 @@
-
+
-
+
@@ -516,7 +516,7 @@
-
+
@@ -529,11 +529,11 @@
-
+
-
+
@@ -556,7 +556,7 @@
-
+
@@ -569,11 +569,11 @@
-
+
-
+
@@ -592,12 +592,12 @@
-
+
@@ -892,7 +892,7 @@
-
+
@@ -905,7 +905,7 @@
-
+
@@ -2617,6 +2617,11 @@ Gw
+
+
+ RubberbandEngineEnabledTransformer
+
+
@@ -2629,6 +2634,11 @@ Gw
+
+
+ RubberbandEngineEnabledTransformer
+
+
@@ -2637,6 +2647,11 @@ Gw
+
+
+ RubberbandEngineEnabledTransformer
+
+
@@ -2649,10 +2664,31 @@ Gw
+
+
+ RubberbandEngineEnabledTransformer
+
+
+
+
+
-
+
diff --git a/Cog.xcodeproj/project.pbxproj b/Cog.xcodeproj/project.pbxproj
index cac9bda0f..3f9adc5c8 100644
--- a/Cog.xcodeproj/project.pbxproj
+++ b/Cog.xcodeproj/project.pbxproj
@@ -161,6 +161,7 @@
839B837F286D7F8D00F529EE /* NumberHertzToStringTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 839B837E286D7F8D00F529EE /* NumberHertzToStringTransformer.swift */; };
839DA7CF274A2D4C001B18E5 /* NSDictionary+Merge.m in Sources */ = {isa = PBXBuildFile; fileRef = 839DA7CE274A2D4C001B18E5 /* NSDictionary+Merge.m */; };
839E56F52879625100DFB5F4 /* SADIE_D02-96000.mhr in Resources */ = {isa = PBXBuildFile; fileRef = 839E56F12879625100DFB5F4 /* SADIE_D02-96000.mhr */; };
+ 839E876E2D5DA0AC00A13526 /* RubberbandEngineTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 839E876D2D5DA0AC00A13526 /* RubberbandEngineTransformer.m */; };
83A360B220E4E81D00192DAB /* Flac.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8303A30C20E4E3D000951EF8 /* Flac.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
83A3B734283AE89000CC6593 /* ColorToValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A3B72F283AE6AA00CC6593 /* ColorToValueTransformer.m */; };
83AA7D04279EBCA900087AA4 /* libavcodec.61.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = 83AA7D00279EBC8200087AA4 /* libavcodec.61.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
@@ -1001,6 +1002,8 @@
839DA7CE274A2D4C001B18E5 /* NSDictionary+Merge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+Merge.m"; sourceTree = ""; };
839E3B53286595D700880EA2 /* GeneralPane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GeneralPane.h; path = Preferences/Preferences/GeneralPane.h; sourceTree = ""; };
839E56F12879625100DFB5F4 /* SADIE_D02-96000.mhr */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SADIE_D02-96000.mhr"; sourceTree = ""; };
+ 839E876C2D5DA0AC00A13526 /* RubberbandEngineTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RubberbandEngineTransformer.h; path = Preferences/Preferences/RubberbandEngineTransformer.h; sourceTree = ""; };
+ 839E876D2D5DA0AC00A13526 /* RubberbandEngineTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RubberbandEngineTransformer.m; path = Preferences/Preferences/RubberbandEngineTransformer.m; sourceTree = ""; };
83A3B72F283AE6AA00CC6593 /* ColorToValueTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = ColorToValueTransformer.m; path = Preferences/Preferences/ColorToValueTransformer.m; sourceTree = ""; };
83A3B733283AE6AA00CC6593 /* ColorToValueTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ColorToValueTransformer.h; path = Preferences/Preferences/ColorToValueTransformer.h; sourceTree = ""; };
83AA7D00279EBC8200087AA4 /* libavcodec.61.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libavcodec.61.dylib; path = ThirdParty/ffmpeg/lib/libavcodec.61.dylib; sourceTree = ""; };
@@ -1407,6 +1410,8 @@
17E0D5F60F520F42005B6FED /* Transformers */ = {
isa = PBXGroup;
children = (
+ 839E876C2D5DA0AC00A13526 /* RubberbandEngineTransformer.h */,
+ 839E876D2D5DA0AC00A13526 /* RubberbandEngineTransformer.m */,
83A3B733283AE6AA00CC6593 /* ColorToValueTransformer.h */,
83A3B72F283AE6AA00CC6593 /* ColorToValueTransformer.m */,
17E0D6120F520F87005B6FED /* FontSizetoLineHeightTransformer.h */,
@@ -2559,6 +2564,7 @@
838A337D2D06C14200D0D770 /* TempoSlider.m in Sources */,
838A337E2D06C14200D0D770 /* PitchSlider.m in Sources */,
838A33832D06CF4100D0D770 /* SpectrumViewCG.m in Sources */,
+ 839E876E2D5DA0AC00A13526 /* RubberbandEngineTransformer.m in Sources */,
838A33842D06CF4100D0D770 /* SpectrumWindowController.m in Sources */,
83B61E2829A82A0200CD0580 /* LyricsWindowController.m in Sources */,
56462EB20D634206000AB68C /* SpotlightPlaylistController.m in Sources */,
diff --git a/Preferences/Preferences/Base.lproj/Preferences.xib b/Preferences/Preferences/Base.lproj/Preferences.xib
index fe9f4a547..dcb6d1314 100644
--- a/Preferences/Preferences/Base.lproj/Preferences.xib
+++ b/Preferences/Preferences/Base.lproj/Preferences.xib
@@ -17,6 +17,7 @@
+
@@ -1193,9 +1194,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1218,9 +1219,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1235,9 +1236,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1260,9 +1261,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1277,9 +1278,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1302,9 +1303,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1318,6 +1319,13 @@
+
+
+
+ RubberbandEngineEnabledTransformer
+
+
+
@@ -1337,6 +1345,11 @@
+
+
+ RubberbandEngineEnabledTransformer
+
+
@@ -1349,9 +1362,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1374,9 +1387,9 @@
-
+
- RubberbandEngineTransformer
+ RubberbandEngineR3Transformer
@@ -1390,6 +1403,13 @@
+
+
+
+ RubberbandEngineEnabledTransformer
+
+
+
@@ -1409,6 +1429,11 @@
+
+
+ RubberbandEngineEnabledTransformer
+
+
@@ -1420,6 +1445,13 @@
+
+
+
+ RubberbandEngineEnabledTransformer
+
+
+
@@ -1439,6 +1471,11 @@
+
+
+ RubberbandEngineEnabledTransformer
+
+
@@ -1450,6 +1487,13 @@
+
+
+
+ RubberbandEngineEnabledTransformer
+
+
+
@@ -1469,6 +1513,11 @@
+
+
+ RubberbandEngineEnabledTransformer
+
+
diff --git a/Preferences/Preferences/GeneralPreferencesPlugin.m b/Preferences/Preferences/GeneralPreferencesPlugin.m
index 6b8c04615..a89a43825 100644
--- a/Preferences/Preferences/GeneralPreferencesPlugin.m
+++ b/Preferences/Preferences/GeneralPreferencesPlugin.m
@@ -27,9 +27,13 @@
[NSValueTransformer setValueTransformer:timeIntervalToStringTransformer
forName:@"TimeIntervalToStringTransformer"];
- NSValueTransformer *rubberbandEngineTransformer = [[RubberbandEngineTransformer alloc] init];
- [NSValueTransformer setValueTransformer:rubberbandEngineTransformer
- forName:@"RubberbandEngineTransformer"];
+ NSValueTransformer *rubberbandEngineR3Transformer = [[RubberbandEngineR3Transformer alloc] init];
+ [NSValueTransformer setValueTransformer:rubberbandEngineR3Transformer
+ forName:@"RubberbandEngineR3Transformer"];
+
+ NSValueTransformer *rubberbandEngineEnabledTransformer = [[RubberbandEngineEnabledTransformer alloc] init];
+ [NSValueTransformer setValueTransformer:rubberbandEngineEnabledTransformer
+ forName:@"RubberbandEngineEnabledTransformer"];
}
+ (NSArray *)preferencePanes {
diff --git a/Preferences/Preferences/RubberbandEngineTransformer.h b/Preferences/Preferences/RubberbandEngineTransformer.h
index 89e3499bd..4edde9084 100644
--- a/Preferences/Preferences/RubberbandEngineTransformer.h
+++ b/Preferences/Preferences/RubberbandEngineTransformer.h
@@ -10,7 +10,15 @@
NS_ASSUME_NONNULL_BEGIN
-@interface RubberbandEngineTransformer : NSValueTransformer
+@interface RubberbandEngineEnabledTransformer : NSValueTransformer
+
+@end
+
+@interface RubberbandEngineHiddenTransformer : NSValueTransformer
+
+@end
+
+@interface RubberbandEngineR3Transformer : NSValueTransformer
@end
diff --git a/Preferences/Preferences/RubberbandEngineTransformer.m b/Preferences/Preferences/RubberbandEngineTransformer.m
index 9f1d098d7..71dc20787 100644
--- a/Preferences/Preferences/RubberbandEngineTransformer.m
+++ b/Preferences/Preferences/RubberbandEngineTransformer.m
@@ -9,7 +9,7 @@
#import "RubberbandEngineTransformer.h"
-@implementation RubberbandEngineTransformer
+@implementation RubberbandEngineR3Transformer
+ (Class)transformedValueClass {
return [NSNumber class];
}
@@ -19,35 +19,62 @@
- (id)transformedValue:(id)value {
if(value == nil) return @(YES);
-
+
if([value isKindOfClass:[NSString class]]) {
NSString *stringValue = value;
- if([stringValue isEqualToString:@"finer"]) {
+ if([stringValue isEqualToString:@"disabled"] ||
+ [stringValue isEqualToString:@"finer"]) {
return @(NO);
}
}
-
+
return @(YES);
}
@end
+@implementation RubberbandEngineEnabledTransformer
++ (Class)transformedValueClass {
+ return [NSNumber class];
+}
++ (BOOL)allowsReverseTransformation {
+ return NO;
+}
+- (id)transformedValue:(id)value {
+ if(value == nil) return @(YES);
+ if([value isKindOfClass:[NSString class]]) {
+ NSString *stringValue = value;
+ if([stringValue isEqualToString:@"disabled"]) {
+ return @(NO);
+ }
+ }
+ return @(YES);
+}
+@end
+@implementation RubberbandEngineHiddenTransformer
++ (Class)transformedValueClass {
+ return [NSNumber class];
+}
++ (BOOL)allowsReverseTransformation {
+ return NO;
+}
+- (id)transformedValue:(id)value {
+ if(value == nil) return @(YES);
+ if([value isKindOfClass:[NSString class]]) {
+ NSString *stringValue = value;
+ if([stringValue isEqualToString:@"disabled"]) {
+ return @(NO);
+ }
+ }
+ return @(YES);
+}
-
-
-
-
-
-
-
-
-
-
+@end
diff --git a/Preferences/Preferences/RubberbandPane.m b/Preferences/Preferences/RubberbandPane.m
index 5df1492ad..c3832aceb 100644
--- a/Preferences/Preferences/RubberbandPane.m
+++ b/Preferences/Preferences/RubberbandPane.m
@@ -45,6 +45,8 @@
- (void)awakeFromNib {
[self removeObjects:[self arrangedObjects]];
+ [self addObject:@{@"name": NSLocalizedStringFromTableInBundle(@"EngineDisabled", nil, [NSBundle bundleForClass:[self class]], @""), @"preference": @"disabled"}];
+
[self addObject:@{@"name": NSLocalizedStringFromTableInBundle(@"EngineFaster", nil, [NSBundle bundleForClass:[self class]], @""), @"preference": @"faster"}];
[self addObject:@{@"name": NSLocalizedStringFromTableInBundle(@"EngineFiner", nil, [NSBundle bundleForClass:[self class]], @""), @"preference": @"finer"}];
diff --git a/Preferences/Preferences/en.lproj/Localizable.strings b/Preferences/Preferences/en.lproj/Localizable.strings
index cf76d66d6..9c196c4c3 100644
--- a/Preferences/Preferences/en.lproj/Localizable.strings
+++ b/Preferences/Preferences/en.lproj/Localizable.strings
@@ -31,6 +31,7 @@
"Volume scale tag only" = "Volume scale tag only";
"Zero Order Hold" = "Zero Order Hold";
"Rubber Band" = "Rubber Band";
+"EngineDisabled" = "Disabled";
"EngineFaster" = "Faster";
"EngineFiner" = "Finer";
"TransientsCrisp" = "Crisp";
diff --git a/Preferences/Preferences/es.lproj/Localizable.strings b/Preferences/Preferences/es.lproj/Localizable.strings
index c7637adf7..9e2131191 100644
--- a/Preferences/Preferences/es.lproj/Localizable.strings
+++ b/Preferences/Preferences/es.lproj/Localizable.strings
@@ -83,6 +83,7 @@
"Zero Order Hold" = "Retención de orden cero";
"Rubber Band" = "Rubber Band";
+"EngineDisabled" = "Desactivado";
"EngineFaster" = "Más rápido";
"EngineFiner" = "Mejor calidad";
"TransientsCrisp" = "Definidos";
diff --git a/Preferences/PreferencesController.h b/Preferences/PreferencesController.h
index 1c71c8004..a797285c1 100644
--- a/Preferences/PreferencesController.h
+++ b/Preferences/PreferencesController.h
@@ -15,5 +15,6 @@
- (IBAction)showPreferences:(id)sender;
- (IBAction)showPathSuggester:(id)sender;
+- (IBAction)showRubberbandSettings:(id)sender;
@end
diff --git a/Preferences/PreferencesController.m b/Preferences/PreferencesController.m
index 717a81a3b..283d7b507 100644
--- a/Preferences/PreferencesController.m
+++ b/Preferences/PreferencesController.m
@@ -38,4 +38,10 @@
[window showPathSuggester];
}
+- (IBAction)showRubberbandSettings:(id)sender {
+ [self initWindow];
+
+ [window showRubberbandSettings];
+}
+
@end
diff --git a/Preferences/PreferencesWindow.h b/Preferences/PreferencesWindow.h
index da494f56e..817e04e98 100644
--- a/Preferences/PreferencesWindow.h
+++ b/Preferences/PreferencesWindow.h
@@ -23,5 +23,6 @@
- (void)show;
- (void)showPathSuggester;
+- (void)showRubberbandSettings;
@end
diff --git a/Preferences/PreferencesWindow.m b/Preferences/PreferencesWindow.m
index 7db3fd4dd..a5e658b69 100644
--- a/Preferences/PreferencesWindow.m
+++ b/Preferences/PreferencesWindow.m
@@ -167,6 +167,14 @@
}
}
+- (void)showRubberbandSettings {
+ NSString *name = NSLocalizedPrefString(@"Rubber Band");
+
+ [self loadPaneNamed:name display:NO];
+
+ [self makeKeyAndOrderFront:self];
+}
+
// Close on Esc pressed.
- (void)cancelOperation:(id)sender {
[self close];
diff --git a/Window/MainWindow.m b/Window/MainWindow.m
index 4562e9ebf..9ebea956c 100644
--- a/Window/MainWindow.m
+++ b/Window/MainWindow.m
@@ -10,9 +10,17 @@
#import "AppController.h"
+// NOTICE! We bury first time defaults that should depend on whether the install is fresh or not here
+// so that they get created correctly depending on the situation.
+
+// For instance, for the first option to get this treatment, we want time stretching to stay enabled
+// for existing installations, but disable itself by default on new installs, to spare processing.
+
void showCrashlyticsConsent(NSWindow *window) {
BOOL askedConsent = [[NSUserDefaults standardUserDefaults] boolForKey:@"crashlyticsAskedConsent"];
if(!askedConsent) {
+ [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"rubberbandEngine": @"disabled" }];
+
[window orderFront:window];
NSAlert *alert = [[NSAlert alloc] init];
@@ -28,6 +36,8 @@ void showCrashlyticsConsent(NSWindow *window) {
}];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"crashlyticsAskedConsent"];
+ } else {
+ [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"rubberbandEngine": @"faster" }];
}
}