changeset 18283:0e2e0050b70a draft

(svn r23119) -Fix: [Win32] Don't show a crash/assertion message box for a GUI-less video driver.
author michi_cc <michi_cc@openttd.org>
date Fri, 04 Nov 2011 23:47:00 +0000
parents 510b749ba70b
children 9c6632d5d556
files src/os/windows/crashlog_win.cpp src/video/dedicated_v.cpp src/video/null_v.cpp
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/os/windows/crashlog_win.cpp
+++ b/src/os/windows/crashlog_win.cpp
@@ -25,6 +25,7 @@
 #include "../../strings_func.h"
 #include "../../gamelog.h"
 #include "../../saveload/saveload.h"
+#include "../../video/video_driver.hpp"
 
 #include <windows.h>
 #include <signal.h>
@@ -526,7 +527,7 @@
 	/* Close any possible log files */
 	CloseConsoleLogIfActive();
 
-	if (_safe_esp != NULL) {
+	if ((_video_driver == NULL || _video_driver->HasGUI()) && _safe_esp != NULL) {
 #ifdef _M_AMD64
 		ep->ContextRecord->Rip = (DWORD64)ShowCrashlogWindow;
 		ep->ContextRecord->Rsp = (DWORD64)_safe_esp;
--- a/src/video/dedicated_v.cpp
+++ b/src/video/dedicated_v.cpp
@@ -163,6 +163,11 @@
 	SetConsoleTitle(_T("OpenTTD Dedicated Server"));
 #endif
 
+#ifdef _MSC_VER
+	/* Disable the MSVC assertion message box. */
+	_set_error_mode(_OUT_TO_STDERR);
+#endif
+
 #ifdef __OS2__
 	/* For OS/2 we also need to switch to console mode instead of PM mode */
 	OS2_SwitchToConsoleMode();
--- a/src/video/null_v.cpp
+++ b/src/video/null_v.cpp
@@ -19,6 +19,11 @@
 
 const char *VideoDriver_Null::Start(const char * const *parm)
 {
+#ifdef _MSC_VER
+	/* Disable the MSVC assertion message box. */
+	_set_error_mode(_OUT_TO_STDERR);
+#endif
+
 	this->ticks = GetDriverParamInt(parm, "ticks", 1000);
 	_screen.width  = _screen.pitch = _cur_resolution.width;
 	_screen.height = _cur_resolution.height;