1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
/**
* @file errorhandler.cpp
* @brief error messages
* @author Tobi Vollebregt <tobivollebregt@gmail.com>
* @author Christopher Han <xiphux@gmail.com>
*
* Error handling based on platform
* Copyright (C) 2005. Licensed under the terms of the
* GNU GPL, v2 or later.
*/
#include <StdAfx.h>
#include "errorhandler.h"
#include "Game/GameServer.h"
#include "Sound/Sound.h"
#include <SDL.h>
#ifdef _WIN32
#include <windows.h>
#endif
// from X_MessageBox.cpp:
void X_MessageBox(const char *msg, const char *caption, unsigned int flags);
void ErrorMessageBox (const char *msg, const char *caption, unsigned int flags)
{
// Platform independent cleanup.
SDL_Quit();
// not exiting threads causes another exception
delete gameServer; gameServer = NULL;
delete sound; sound = NULL;
#ifdef _WIN32
// Windows implementation, using MessageBox.
// Translate spring flags to corresponding win32 dialog flags
unsigned int winFlags = 0; // MB_OK is default (0)
if (flags & MBF_EXCL)
winFlags |= MB_ICONEXCLAMATION;
if (flags & MBF_INFO)
winFlags |= MB_ICONINFORMATION;
MessageBox (GetActiveWindow(), msg, caption, winFlags);
#else
// X implementation
// TODO: write Mac OS X specific message box
X_MessageBox(msg, caption, flags);
#endif
exit(-1); // continuing execution when SDL_Quit has already been run will result in a crash
}
|