summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Howard2011-03-30 19:00:51 +0000
committerSimon Howard2011-03-30 19:00:51 +0000
commit72b17f7b82b70cac0a12283b0b26b01e634c3728 (patch)
treebd401cda36ff0d4901efaf5db92ccc4ba0a196aa /src
parent0268c882d96942175f1c6028c636dddce8af593f (diff)
downloadchocolate-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.c43
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);