Commit 0e4a59ef authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: fixed broken preferences on launch when starting 2.0.2 for the first time

'control' and 'extraintf' will be checked for occurences of 'macosx', which, if found, in turn will be removed. Other contents of these settings won't be touched. Same for all the other prefs.
(cherry picked from commit d864f1cac639f2a8a71727d37c8187de3e56d2ba)
parent 8c411815
......@@ -51,6 +51,9 @@ Mac OS X:
* Fix crash when mounting a device with multiple logical volumes while
VLC is running
* Chosen audio output device is retained throughout multiple sessions
* Since running the Mac OS X interface as an Extra Interface or Control
Interface can lead to undefined results, eventual settings will be
automatically reset on the first launch.
* Miscellaneous minor interface improvements
Lua Scripts:
......
......@@ -1868,10 +1868,50 @@ unsigned int CocoaKeyToVLC( unichar i_key )
- (void)_removeOldPreferences
{
static NSString * kVLCPreferencesVersion = @"VLCPreferencesVersion";
static const int kCurrentPreferencesVersion = 1;
static const int kCurrentPreferencesVersion = 2;
int version = [[NSUserDefaults standardUserDefaults] integerForKey:kVLCPreferencesVersion];
if( version >= kCurrentPreferencesVersion ) return;
if( version == 1 )
{
NSMutableString * o_workString = [[NSMutableString alloc] initWithFormat:@"%s", config_GetPsz( VLCIntf, "extraintf" )];
NSRange returnedRange;
NSRange fullRange;
BOOL b_needsRestart = NO;
#define fixpref( pref ) \
o_workString = [[NSMutableString alloc] initWithFormat:@"%s", config_GetPsz( VLCIntf, pref )]; \
if ([o_workString length] > 0) \
{ \
returnedRange = [o_workString rangeOfString:@"macosx" options: NSCaseInsensitiveSearch]; \
if (returnedRange.location != NSNotFound) \
{ \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@":macosx" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@"macosx:" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
fullRange = NSMakeRange( 0, [o_workString length] ); \
[o_workString replaceOccurrencesOfString:@"macosx" withString:@"" options: NSCaseInsensitiveSearch range: fullRange]; \
config_PutPsz( VLCIntf, pref, [o_workString UTF8String] ); \
b_needsRestart = YES; \
} \
} \
[o_workString release]
fixpref( "control" );
fixpref( "extraintf" );
#undef fixpref
[[NSUserDefaults standardUserDefaults] setInteger:kCurrentPreferencesVersion forKey:kVLCPreferencesVersion];
[[NSUserDefaults standardUserDefaults] synchronize];
if (!b_needsRestart)
return;
else
config_SaveConfigFile( VLCIntf ); // we need to do manually, since we won't quit libvlc cleanly
}
else
{
NSArray *libraries = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,
NSUserDomainMask, YES);
if( !libraries || [libraries count] == 0) return;
......@@ -1904,6 +1944,7 @@ unsigned int CocoaKeyToVLC( unichar i_key )
[[NSUserDefaults standardUserDefaults] setInteger:kCurrentPreferencesVersion forKey:kVLCPreferencesVersion];
[[NSUserDefaults standardUserDefaults] synchronize];
}
/* Relaunch now */
const char * path = [[[NSBundle mainBundle] executablePath] UTF8String];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment