Browse Source

macOS: Add initialization of breakpad crash reporter

pull/55/head
Marvin Scholz 9 years ago
parent
commit
9fe1c7c2ca
  1. 42
      bin/darwinvlc.m
  2. 8
      modules/gui/macosx/Resources/Info.plist.in

42
bin/darwinvlc.m

@ -35,6 +35,10 @@
#import <CoreFoundation/CoreFoundation.h>
#import <Cocoa/Cocoa.h>
#ifdef HAVE_BREAKPAD
#import <Breakpad/Breakpad.h>
#endif
/**
* Handler called when VLC asks to terminate the program.
@ -75,6 +79,36 @@ static void vlc_terminate(void *data)
});
}
#ifdef HAVE_BREAKPAD
BreakpadRef initBreakpad()
{
BreakpadRef bp = nil;
/* Create caches directory in case it does not exist */
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSString *bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];
NSString *cacheAppPath = [cachePath stringByAppendingPathComponent:bundleName];
if (![fileManager fileExistsAtPath:cacheAppPath]) {
[fileManager createDirectoryAtPath:cacheAppPath withIntermediateDirectories:NO attributes:nil error:nil];
}
/* Get Info.plist config */
NSMutableDictionary *breakpad_config = [[[NSBundle mainBundle] infoDictionary] mutableCopy];
/* Use in-process reporting */
[breakpad_config setObject:[NSNumber numberWithBool:YES]
forKey:@BREAKPAD_IN_PROCESS];
/* Set dump location */
[breakpad_config setObject:cacheAppPath
forKey:@BREAKPAD_DUMP_DIRECTORY];
bp = BreakpadCreate(breakpad_config);
return bp;
}
#endif
/*****************************************************************************
* main: parse command line, start interface and spawn threads.
*****************************************************************************/
@ -259,6 +293,10 @@ int main(int i_argc, const char *ppsz_argv[])
* runloop is used. Otherwise, [NSApp run] needs to be called, which setups more stuff
* before actually starting the loop.
*/
#ifdef HAVE_BREAKPAD
BreakpadRef breakpad;
breakpad = initBreakpad();
#endif
@autoreleasepool {
if(NSApp == nil) {
CFRunLoopRun();
@ -277,5 +315,9 @@ out:
libvlc_release(vlc);
#ifdef HAVE_BREAKPAD
BreakpadRelease(breakpad);
#endif
return ret;
}

8
modules/gui/macosx/Resources/Info.plist.in

@ -1477,6 +1477,14 @@
<string>@VERSION@</string>
<key>CFBundleSignature</key>
<string>VLC#</string>
<key>BreakpadProduct</key>
<string>VLC-macOS</string>
<key>BreakpadVendor</key>
<string>VideoLAN</string>
<key>BreakpadRequestComments</key>
<string>1</string>
<key>BreakpadURL</key>
<string>https://crashes.videolan.org/crashreports</string>
<key>CFBundleURLTypes</key>
<array>
<dict>

Loading…
Cancel
Save