diff options
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/macosx_application.m | 25 | ||||
-rw-r--r-- | osdep/path-macosx.m | 2 |
2 files changed, 21 insertions, 6 deletions
diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m index 0379491d79..b42cba5c37 100644 --- a/osdep/macosx_application.m +++ b/osdep/macosx_application.m @@ -242,12 +242,26 @@ static void macosx_redirect_output_to_logfile(const char *filename) [pool release]; } -static bool bundle_started_from_finder() +static bool bundle_started_from_finder(char **argv) { - NSDictionary *env = [[NSProcessInfo processInfo] environment]; - NSString *is_bundle = [env objectForKey:@"MPVBUNDLE"]; + NSString *binary_path = [NSString stringWithUTF8String:argv[0]]; + return [binary_path hasSuffix:@"mpv-bundle"]; +} + +static bool is_psn_argument(char *arg_to_check) +{ + NSString *arg = [NSString stringWithUTF8String:arg_to_check]; + return [arg hasPrefix:@"-psn_"]; +} + +static void setup_bundle(int *argc, char *argv[]) +{ + if (*argc > 1 && is_psn_argument(argv[1])) { + *argc = 1; + argv[1] = NULL; + } - return is_bundle ? [is_bundle boolValue] : false; + setenv("MPVBUNDLE", "true", 1); } int cocoa_main(int argc, char *argv[]) @@ -260,7 +274,8 @@ int cocoa_main(int argc, char *argv[]) ctx.argc = &argc; ctx.argv = &argv; - if (bundle_started_from_finder()) { + if (bundle_started_from_finder(argv)) { + setup_bundle(&argc, argv); macosx_redirect_output_to_logfile("mpv"); init_cocoa_application(true); } else { diff --git a/osdep/path-macosx.m b/osdep/path-macosx.m index 73abb0d305..8a5a704e49 100644 --- a/osdep/path-macosx.m +++ b/osdep/path-macosx.m @@ -21,7 +21,7 @@ const char *mp_get_platform_path_osx(void *talloc_ctx, const char *type) { - if (strcmp(type, "osxbundle") == 0) { + if (strcmp(type, "osxbundle") == 0 && getenv("MPVBUNDLE")) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSString *path = [[NSBundle mainBundle] resourcePath]; char *res = talloc_strdup(talloc_ctx, [path UTF8String]); |