** 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
#ifdef HAVE_WXWINDOWS
#include "../src/ctsim.h"
+#include <wx/log.h>
#endif
/* NAME
* 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
#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)
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";