]> granicus.if.org Git - handbrake/commitdiff
MacGui: added a missing retain, it caused a crash when selecting a new default preset...
authorritsuka <damiog@gmail.com>
Mon, 24 Nov 2014 19:20:11 +0000 (19:20 +0000)
committerritsuka <damiog@gmail.com>
Mon, 24 Nov 2014 19:20:11 +0000 (19:20 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6551 b64f7644-9d1e-0410-96f1-a4d463321fa5

macosx/Controller.m
macosx/HBPresetsManager.m

index a9f58c885578988e8fa676e2856040d155ba8fa5..2e9b0dc24effc1339e8d5c784f04dcf2f943cf75 100644 (file)
@@ -81,7 +81,7 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
         // we init the HBPresetsManager class
         NSURL *presetsURL = [NSURL fileURLWithPath:[[HBUtilities appSupportPath] stringByAppendingPathComponent:@"UserPresets.plist"]];
         presetManager = [[HBPresetsManager alloc] initWithURL:presetsURL];
-        _selectedPreset = presetManager.defaultPreset;
+        _selectedPreset = [presetManager.defaultPreset retain];
 
         // Workaround to avoid a bug in Snow Leopard
         // we can switch back to [[NSApplication sharedApplication] applicationIconImage]
index f7b53210720f517ed36f4b8de061044991385dd0..53f74d3e5e3b4627c96177eb0655902d08281465 100644 (file)
@@ -179,10 +179,7 @@ NSString *HBPresetsChangedNotification = @"HBPresetsChangedNotification";
         }
     }
 
-    if (!node.isBuiltIn)
-    {
-        node.delegate = self;
-    }
+    node.delegate = self;
 
     return node;
 }
@@ -293,14 +290,15 @@ NSString *HBPresetsChangedNotification = @"HBPresetsChangedNotification";
 }
 
 /**
- *  Private method to select a new default
- *  when the default preset is deleted.
+ *  Private method to select a new default after the default preset is deleted
+ *  or when the built-in presets are regenerated.
  */
 - (void)selectNewDefault
 {
     __block HBPreset *normalPreset = nil;
     __block HBPreset *firstUserPreset = nil;
     __block HBPreset *firstBuiltInPreset = nil;
+    __block BOOL defaultAlreadySetted = NO;
 
     // Search for a possibile new default preset
     // Try to use "Normal" or the first user preset.
@@ -321,9 +319,16 @@ NSString *HBPresetsChangedNotification = @"HBPresetsChangedNotification";
             firstUserPreset = obj;
             *stop = YES;
         }
+
+        if ([obj isDefault]) {
+            defaultAlreadySetted = YES;
+        }
     }];
 
-    if (normalPreset)
+    if (defaultAlreadySetted) {
+        return;
+    }
+    else if (normalPreset)
     {
         self.defaultPreset = normalPreset;
         normalPreset.isDefault = YES;
@@ -397,20 +402,17 @@ NSString *HBPresetsChangedNotification = @"HBPresetsChangedNotification";
         @selector(createAndroidTabletPreset),
         @selector(createW8PhonePreset)
     };
-    
+
     SEL regularPresets[] = { @selector(createNormalPreset),
         @selector(createHighProfilePreset)};
-    
+
     [self deleteBuiltInPresets];
 
     [self loadPresetsForType:@"Regular" fromSel:regularPresets length:2];
     [self loadPresetsForType:@"Devices" fromSel:devicesPresets length:10];
 
-    if (self.defaultPreset == nil)
-    {
-        [self selectNewDefault];
-    }
-
+    // set a new Default preset
+    [self selectNewDefault];
 
     [HBUtilities writeToActivityLog: "built in presets updated to build number: %d", [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]];
 }