]> git.sesse.net Git - vlc/commitdiff
OSX: don't open items twice
authorRafaël Carré <funman@videolan.org>
Sat, 22 Jun 2013 13:22:03 +0000 (15:22 +0200)
committerRafaël Carré <funman@videolan.org>
Sun, 23 Jun 2013 22:22:51 +0000 (00:22 +0200)
Closes: #8611
modules/gui/macosx/intf.h
modules/gui/macosx/intf.m

index 768b149056d234860c9cde3ec3bb892bbb89f4f3..e26f654249026e23555aa18dcaa65547443b4bab 100644 (file)
@@ -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 */
index 179aafb12e1cad69c5638e093d996a2fcb154d8f..bf9b1b113ab4ee1c8f6e2402430117987291e13e 100644 (file)
@@ -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;
 }