[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