From 2607a2b892ce3c4f4da0b09c88ed1d6a4951020c Mon Sep 17 00:00:00 2001 From: der richter Date: Thu, 30 Jan 2020 14:32:31 +0100 Subject: [PATCH] mac: activate logging when started from the bundle this creates a default log for the last mpv run when started from the bundle. that way one can get a log of what happened even after an issue occurred. also add a menu entry under Help to show the current log, but only when the bundle is used. Fixes #7396 Fixes #2547 --- .github/ISSUE_TEMPLATE/2_bug_report_macos.md | 8 ++-- DOCS/man/options.rst | 3 ++ .../mpv.app/Contents/Resources/mpv.conf | 1 + osdep/macosx_menubar.m | 45 +++++++++++++++++-- 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/2_bug_report_macos.md b/.github/ISSUE_TEMPLATE/2_bug_report_macos.md index d33c52bbba..a61972d1b0 100644 --- a/.github/ISSUE_TEMPLATE/2_bug_report_macos.md +++ b/.github/ISSUE_TEMPLATE/2_bug_report_macos.md @@ -31,9 +31,11 @@ differes from your own. ### Log file -Make a log file made with -v -v or --log-file=output.txt, paste it to -https://0x0.st/ or attach it to the github issue, and replace this text with a -link to it. +Make a log file made with -v -v or --log-file=output.txt. If you use the Bundle +from a version later than 0.32 a default log is created for your last run at +~/Library/Logs/mpv.log. You can jump to that file via the Help > Show log File… +menu. Paste the log to https://0x0.st/ or attach it to the github issue, and +replace this text with a link to it. In the case of a crash please provide the macOS Crash Report (Backtrace). diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index bcdad2ed41..1d18638f2a 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -652,6 +652,9 @@ Program Behavior can be raised via ``--msg-level`` (the option cannot lower it below the forced minimum log level). + A special case is the macOS bundle, it will create a log file at + ``~/Library/Logs/mpv.log`` by default. + ``--config-dir=`` Force a different configuration directory. If this is set, the given directory is used to load configuration files, and all other configuration diff --git a/TOOLS/osxbundle/mpv.app/Contents/Resources/mpv.conf b/TOOLS/osxbundle/mpv.app/Contents/Resources/mpv.conf index bdffa7a951..618f87e24b 100644 --- a/TOOLS/osxbundle/mpv.app/Contents/Resources/mpv.conf +++ b/TOOLS/osxbundle/mpv.app/Contents/Resources/mpv.conf @@ -1 +1,2 @@ player-operation-mode=pseudo-gui +log-file=~/Library/Logs/mpv.log diff --git a/osdep/macosx_menubar.m b/osdep/macosx_menubar.m index 349dd85aff..11fdda5e53 100644 --- a/osdep/macosx_menubar.m +++ b/osdep/macosx_menubar.m @@ -594,6 +594,15 @@ @"key" : @"", @"target" : self, @"url" : @"https://github.com/mpv-player/mpv/issues/new/choose" + }], + [NSMutableDictionary dictionaryWithDictionary:@{ + @"name" : @"Show log File…", + @"action" : @"showFile:", + @"key" : @"", + @"target" : self, + @"file" : @"~/Library/Logs/mpv.log", + @"alertTitle" : @"No log File found.", + @"alertText" : @"You deactivated logging for the Bundle." }] ] } @@ -609,6 +618,7 @@ { NSMenu *mainMenu = [[NSMenu alloc] initWithTitle:@"MainMenu"]; [NSApp setServicesMenu:[[NSMenu alloc] init]]; + NSString* bundle = [[[NSProcessInfo processInfo] environment] objectForKey:@"MPVBUNDLE"]; for(id mMenu in menuTree) { NSMenu *menu = [[NSMenu alloc] initWithTitle:mMenu[@"name"]]; @@ -618,17 +628,25 @@ [mainMenu setSubmenu:menu forItem:mItem]; for(id subMenu in mMenu[@"menu"]) { + NSString *name = subMenu[@"name"]; + NSString *action = subMenu[@"action"]; + #if HAVE_MACOS_TOUCHBAR - if ([subMenu[@"action"] isEqual:@"toggleTouchBarCustomizationPalette:"]) { + if ([action isEqual:@"toggleTouchBarCustomizationPalette:"]) { if (![NSApp respondsToSelector:@selector(touchBar)]) continue; } #endif - if ([subMenu[@"name"] isEqual:@"separator"]) { + + if ([name isEqual:@"Show log File…"] && ![bundle isEqual:@"true"]) { + continue; + } + + if ([name isEqual:@"separator"]) { [menu addItem:[NSMenuItem separatorItem]]; } else { - NSMenuItem *iItem = [menu addItemWithTitle:subMenu[@"name"] - action:NSSelectorFromString(subMenu[@"action"]) + NSMenuItem *iItem = [menu addItemWithTitle:name + action:NSSelectorFromString(action) keyEquivalent:subMenu[@"key"]]; [iItem setTarget:subMenu[@"target"]]; [subMenu setObject:iItem forKey:@"menuItem"]; @@ -754,6 +772,25 @@ [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; } +- (void)showFile:(NSMenuItem *)menuItem +{ + NSWorkspace *workspace = [NSWorkspace sharedWorkspace]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSMutableDictionary *mItemDict = [self getDictFromMenuItem:menuItem]; + NSString *file = [mItemDict[@"file"] stringByExpandingTildeInPath]; + + if ([fileManager fileExistsAtPath:file]){ + NSURL *url = [NSURL fileURLWithPath:file]; + NSArray *urlArray = [NSArray arrayWithObjects:url, nil]; + + [workspace activateFileViewerSelectingURLs:urlArray]; + return; + } + + [self alertWithTitle:mItemDict[@"alertTitle"] + andText:mItemDict[@"alertText"]]; +} + - (void)alertWithTitle:(NSString *)title andText:(NSString *)text { NSAlert *alert = [[NSAlert alloc] init];