X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9c21efe30131c78c25763446e0754e2a0b54dc30..edf2f43eade1ec5d3c6cbd96cb13551acabc9a99:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index 1ec43bfa0a..03838b73d7 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -57,9 +57,11 @@ #include #include -#ifdef __WXMSW__ +#if defined(__WXMSW__) #include "wx/msw/private.h" // includes windows.h for OutputDebugString -#else //Unix +#endif + +#if !defined(__WXMSW__) || defined(__WXMICROWIN__) #include #endif //Win/Unix @@ -323,6 +325,16 @@ wxLog *wxLog::SetActiveTarget(wxLog *pLogger) return pOldLogger; } +void wxLog::DontCreateOnDemand() +{ + ms_bAutoCreate = FALSE; + + // this is usually called at the end of the program and we assume that it + // is *always* called at the end - so we free memory here to avoid false + // memory leak reports from wxWin memory tracking code + ClearTraceMasks(); +} + void wxLog::RemoveTraceMask(const wxString& str) { int index = ms_aTraceMasks.Index(str); @@ -330,6 +342,11 @@ void wxLog::RemoveTraceMask(const wxString& str) ms_aTraceMasks.Remove((size_t)index); } +void wxLog::ClearTraceMasks() +{ + ms_aTraceMasks.Clear(); +} + void wxLog::TimeStamp(wxString *str) { if ( ms_timestamp ) @@ -498,7 +515,7 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) // under Windows, programs usually don't have stderr at all, so show the // messages also under debugger - unless it's a console program -#if defined(__WXMSW__) && wxUSE_GUI +#if defined(__WXMSW__) && wxUSE_GUI && !defined(__WXMICROWIN__) str += wxT("\r\n") ; OutputDebugString(str.c_str()); #endif // MSW @@ -541,10 +558,10 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) // ---------------------------------------------------------------------------- #if wxUSE_STD_IOSTREAM -wxLogStream::wxLogStream(ostream *ostr) +wxLogStream::wxLogStream(wxSTD ostream *ostr) { if ( ostr == NULL ) - m_ostr = &cerr; + m_ostr = &wxSTD cerr; else m_ostr = ostr; } @@ -553,7 +570,7 @@ void wxLogStream::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) { wxString str; TimeStamp(&str); - (*m_ostr) << str << wxConvertWX2MB(szString) << endl; + (*m_ostr) << str << wxConvertWX2MB(szString) << wxSTD endl; } #endif // wxUSE_STD_IOSTREAM @@ -624,7 +641,7 @@ static void wxLogWrap(FILE *f, const char *pszPrefix, const char *psz) // get error code from syste unsigned long wxSysErrorCode() { -#ifdef __WXMSW__ +#if defined(__WXMSW__) && !defined(__WXMICROWIN__) #ifdef __WIN32__ return ::GetLastError(); #else //WIN16 @@ -642,7 +659,7 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) if ( nErrCode == 0 ) nErrCode = wxSysErrorCode(); -#ifdef __WXMSW__ +#if defined(__WXMSW__) && !defined(__WXMICROWIN__) #ifdef __WIN32__ static wxChar s_szBuf[LOG_BUFFER_SIZE / 2]; @@ -690,10 +707,16 @@ const wxChar *wxSysErrorMsg(unsigned long nErrCode) #ifdef __WXDEBUG__ +// wxASSERT() helper +bool wxAssertIsEqual(int x, int y) +{ + return x == y; +} + // break into the debugger -void Trap() +void wxTrap() { -#ifdef __WXMSW__ +#if defined(__WXMSW__) && !defined(__WXMICROWIN__) DebugBreak(); #elif defined(__WXMAC__) #if __powerc @@ -717,7 +740,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) if ( s_bInAssert ) { // He-e-e-e-elp!! we're trapped in endless loop - Trap(); + wxTrap(); s_bInAssert = FALSE; @@ -751,18 +774,18 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) // send it to the normal log destination wxLogDebug(szBuf); -#if wxUSE_GUI || defined(__WXMSW__) +#if (wxUSE_GUI && wxUSE_MSGDLG) || defined(__WXMSW__) // this message is intentionally not translated - it is for // developpers only wxStrcat(szBuf, wxT("\nDo you want to stop the program?\nYou can also choose [Cancel] to suppress further warnings.")); // use the native message box if available: this is more robust than // using our own -#ifdef __WXMSW__ +#if defined(__WXMSW__) && !defined(__WXMICROWIN__) switch ( ::MessageBox(NULL, szBuf, _T("Debug"), MB_YESNOCANCEL | MB_ICONSTOP ) ) { case IDYES: - Trap(); + wxTrap(); break; case IDCANCEL: @@ -775,7 +798,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) switch ( wxMessageBox(szBuf, wxT("Debug"), wxYES_NO | wxCANCEL | wxICON_STOP ) ) { case wxYES: - Trap(); + wxTrap(); break; case wxCANCEL: @@ -787,7 +810,7 @@ void wxOnAssert(const wxChar *szFile, int nLine, const wxChar *szMsg) #endif // GUI or MSW #else // !GUI - Trap(); + wxTrap(); #endif // GUI/!GUI }