[vlc-devel] [PATCH] OSX: don't open items twice

Rafaël Carré funman at videolan.org
Sun Jun 23 18:51:31 CEST 2013


Closes: #8611
---
 modules/gui/macosx/intf.h |  2 ++
 modules/gui/macosx/intf.m | 28 +++++++++++++++++++++++-----
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/modules/gui/macosx/intf.h b/modules/gui/macosx/intf.h
index 768b149..e26f654 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 179aafb..d2dbdfd 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,8 @@ 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];
+    BOOL b_enqueue = config_GetInt(VLCIntf, "macosx-autoplay") ? NO : YES;
+    [o_playlist appendArray: o_result atPos: -1 enqueue: b_enqueue];
 
     return;
 }
-- 
1.8.1.2



More information about the vlc-devel mailing list