From 07fcd250bffc2972f9aa9fd314e9f5ba027c00f9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C3=ABl=20Carr=C3=A9?= Date: Sat, 22 Jun 2013 15:22:03 +0200 Subject: [PATCH] OSX: don't open items twice Closes: #8611 --- modules/gui/macosx/intf.h | 2 ++ modules/gui/macosx/intf.m | 27 ++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h index 768b149056..e26f654249 100644 --- a/modules/gui/macosx/intf.h +++ b/modules/gui/macosx/intf.h @@ -82,6 +82,8 @@ struct intf_sys_t { intf_thread_t *p_intf; /* The main intf object */ input_thread_t *p_current_input, *p_input_changed; + BOOL launched; /* finishedLaunching */ + int items_at_launch; /* items in playlist after launch */ id o_mainmenu; /* VLCMainMenu */ id o_prefs; /* VLCPrefs */ id o_sprefs; /* VLCSimplePrefs */ diff --git a/modules/gui/macosx/intf.m b/modules/gui/macosx/intf.m index 179aafb12e..bf9b1b113a 100644 --- a/modules/gui/macosx/intf.m +++ b/modules/gui/macosx/intf.m @@ -782,8 +782,18 @@ static VLCMain *_o_sharedMainInstance = nil; nib_main_loaded = TRUE; } +- (void)applicationWillFinishLaunching:(NSNotification *)aNotification +{ + playlist_t * p_playlist = pl_Get(VLCIntf); + PL_LOCK; + items_at_launch = p_playlist->p_local_category->i_children; + PL_UNLOCK; +} + - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { + launched = YES; + if (!p_intf) return; @@ -1047,9 +1057,19 @@ static VLCMain *_o_sharedMainInstance = nil; - (void)application:(NSApplication *)o_app openFiles:(NSArray *)o_names { - BOOL b_autoplay = config_GetInt(VLCIntf, "macosx-autoplay"); char *psz_uri = vlc_path2uri([[o_names objectAtIndex:0] UTF8String], "file"); + if (launched == NO) { + if (items_at_launch) { + int items = [o_names count]; + if (items > items_at_launch) + items_at_launch = 0; + else + items_at_launch -= items; + return; + } + } + // try to add file as subtitle if ([o_names count] == 1 && psz_uri) { input_thread_t * p_input = pl_CurrentInput(VLCIntf); @@ -1077,10 +1097,7 @@ static VLCMain *_o_sharedMainInstance = nil; [o_result addObject: o_dic]; } - if (b_autoplay) - [o_playlist appendArray: o_result atPos: -1 enqueue: NO]; - else - [o_playlist appendArray: o_result atPos: -1 enqueue: YES]; + [o_playlist appendArray: o_result atPos: -1 enqueue: !config_GetInt(VLCIntf, "macosx-autoplay")]; return; } -- 2.39.2