From 72b17f7b82b70cac0a12283b0b26b01e634c3728 Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Wed, 30 Mar 2011 19:00:51 +0000 Subject: On OS X, display a dialog box when exiting with I_Error, like on Windows. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 2317 --- src/i_system.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/i_system.c b/src/i_system.c index 4db97276..7d3687be 100644 --- a/src/i_system.c +++ b/src/i_system.c @@ -38,6 +38,8 @@ #include #endif +#include "config.h" + #include "deh_main.h" #include "doomdef.h" #include "doomstat.h" @@ -59,6 +61,10 @@ #include "w_wad.h" #include "z_zone.h" +#ifdef __MACOSX__ +#include +#endif + #define DEFAULT_RAM 16 /* MiB */ #define MIN_RAM 4 /* MiB */ @@ -364,6 +370,43 @@ void I_Error (char *error, ...) } #endif +#ifdef __MACOSX__ + { + CFStringRef message; + char msgbuf[512]; + int i; + + va_start(argptr, error); + memset(msgbuf, 0, sizeof(msgbuf)); + vsnprintf(msgbuf, sizeof(msgbuf) - 1, error, argptr); + va_end(argptr); + + // The CoreFoundation message box wraps text lines, so replace + // newline characters with spaces so that multiline messages + // are continuous. + + for (i = 0; msgbuf[i] != '\0'; ++i) + { + if (msgbuf[i] == '\n') + { + msgbuf[i] = ' '; + } + } + + message = CFStringCreateWithCString(NULL, msgbuf, + kCFStringEncodingUTF8); + + CFUserNotificationDisplayNotice(0, + kCFUserNotificationCautionAlertLevel, + NULL, + NULL, + NULL, + CFSTR(PACKAGE_STRING), + message, + NULL); + } +#endif + // abort(); exit(-1); -- cgit v1.2.3