/* $Id: main.mm,v 1.3 2005/11/25 15:04:35 titer Exp $
This file is part of the HandBrake source code.
Homepage: .
It may be used under the terms of the GNU General Public License. */
#import
#include "hb.h"
static void hb_error_handler(const char *errmsg)
{
NSString *error = @(errmsg);
if (error && [[NSUserDefaults standardUserDefaults] boolForKey:@"HBDebugAlert"])
{
dispatch_async(dispatch_get_main_queue(), ^{
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:NSLocalizedString(@"Internal Error.", @"")];
[alert runModal];
[alert release];
});
}
fprintf(stderr, "error: %s\n", errmsg);
}
int main(int argc, const char **argv)
{
// Register a signal handler using grand central dispatch.
dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_SIGNAL, SIGINT, 0, dispatch_get_main_queue());
dispatch_source_set_event_handler(source, ^{
[NSApp terminate:nil];
});
dispatch_resume(source);
// Tell sigaction to ignore the SIGINT signal
// because we handle it already with gcd.
struct sigaction action = { 0 };
action.sa_handler = SIG_IGN;
sigaction(SIGINT, &action, NULL);
hb_global_init();
hb_register_error_handler(&hb_error_handler);
return NSApplicationMain(argc, argv);
}