X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=libctsupport%2Fsyserror.cpp;h=e24ec85511f3f2802c5e441430057839434abec6;hp=5b4e6315a3f993fe7f7b9af7adb73077554d3670;hb=a2bb680d159717dbd81e3ad179cb28adbf3a3e9a;hpb=3f6c94c6bd432ad7b7a55ad991d3b8223fb44f18 diff --git a/libctsupport/syserror.cpp b/libctsupport/syserror.cpp index 5b4e631..e24ec85 100644 --- a/libctsupport/syserror.cpp +++ b/libctsupport/syserror.cpp @@ -2,7 +2,7 @@ ** This is part of the CTSim program ** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: syserror.cpp,v 1.21 2001/02/20 04:48:45 kevin Exp $ +** $Id$ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -28,6 +28,7 @@ #ifdef HAVE_WXWINDOWS #include "../src/ctsim.h" +#include #endif /* NAME @@ -38,7 +39,6 @@ * int severity Severity of error * char *msg Error message * args Argument list, direct transfer to printf stack -* Can take 24 byte transfer */ static int s_reportErrorLevel = ERR_TRACE; // Set error reporting level @@ -55,20 +55,31 @@ void sys_error (int severity, const char *msg, ...) #ifdef HAVE_WXWINDOWS if (g_bRunningWXWindows) { - if (theApp) - *theApp->getLog() << strOutput.c_str() << "\n"; - else + if (theApp) { + wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT ); + wxString msg (strOutput.c_str()); + if (msg.length() > 0) { + msg += "\n"; + eventLog.SetString( msg ); + wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event, thread safe + } + } else { + wxMutexGuiEnter(); wxLog::OnLog (wxLOG_Message, strOutput.c_str(), time(NULL)); + wxMutexGuiLeave(); + } } else -#endif std::cout << strOutput << "\n"; +#else + std::cout << strOutput << "\n"; +#endif va_end(arg); } -static int s_nErrorCount = 0; -const static int MAX_ERROR_COUNT = 20; +static unsigned long s_nErrorCount = 0; +unsigned long int g_lSysErrorMaxCount = 2000; void sys_verror (std::string& strOutput, int severity, const char *msg, va_list arg) @@ -82,9 +93,9 @@ void sys_verror (std::string& strOutput, int severity, const char *msg, va_list s_nErrorCount++; if (severity != ERR_FATAL) { - if (s_nErrorCount > MAX_ERROR_COUNT) + if (s_nErrorCount > g_lSysErrorMaxCount) return; - else if (s_nErrorCount == MAX_ERROR_COUNT) { + else if (s_nErrorCount == g_lSysErrorMaxCount) { os << "*****************************************************************\n"; os << "*** M A X I M U M E R R O R C O U N T R E A C H E D ***\n"; os << "*** ***\n";