diff options
author | Simon Howard | 2011-03-30 19:00:51 +0000 |
---|---|---|
committer | Simon Howard | 2011-03-30 19:00:51 +0000 |
commit | 72b17f7b82b70cac0a12283b0b26b01e634c3728 (patch) | |
tree | bd401cda36ff0d4901efaf5db92ccc4ba0a196aa /src | |
parent | 0268c882d96942175f1c6028c636dddce8af593f (diff) | |
download | chocolate-doom-72b17f7b82b70cac0a12283b0b26b01e634c3728.tar.gz chocolate-doom-72b17f7b82b70cac0a12283b0b26b01e634c3728.tar.bz2 chocolate-doom-72b17f7b82b70cac0a12283b0b26b01e634c3728.zip |
On OS X, display a dialog box when exiting with I_Error, like on
Windows.
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 2317
Diffstat (limited to 'src')
-rw-r--r-- | src/i_system.c | 43 |
1 files changed, 43 insertions, 0 deletions
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 <unistd.h> #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 <CoreFoundation/CFUserNotification.h> +#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); |