Skip to content

Commit

Permalink
mac: activate logging when started from the bundle
Browse files Browse the repository at this point in the history
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 mpv-player#7396
Fixes mpv-player#2547
  • Loading branch information
Akemi committed Feb 8, 2020
1 parent b7b8a77 commit 2607a2b
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 7 deletions.
8 changes: 5 additions & 3 deletions .github/ISSUE_TEMPLATE/2_bug_report_macos.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).

Expand Down
3 changes: 3 additions & 0 deletions DOCS/man/options.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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=<path>``
Force a different configuration directory. If this is set, the given
directory is used to load configuration files, and all other configuration
Expand Down
1 change: 1 addition & 0 deletions TOOLS/osxbundle/mpv.app/Contents/Resources/mpv.conf
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
player-operation-mode=pseudo-gui
log-file=~/Library/Logs/mpv.log
45 changes: 41 additions & 4 deletions osdep/macosx_menubar.m
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,15 @@ - (id)init
@"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."
}]
]
}
Expand All @@ -609,6 +618,7 @@ - (NSMenu *)mainMenu
{
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"]];
Expand All @@ -618,17 +628,25 @@ - (NSMenu *)mainMenu
[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"];
Expand Down Expand Up @@ -754,6 +772,25 @@ - (void)url:(NSMenuItem *)menuItem
[[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];
Expand Down

0 comments on commit 2607a2b

Please sign in to comment.