X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a2d382650097c5834093a8af0566e1c1ff683c8d..2f94ab4099941a5f47ced25799dd28b12ccdc319:/src/common/log.cpp diff --git a/src/common/log.cpp b/src/common/log.cpp index 9ca1c34bd7..80418f1c89 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -385,13 +385,13 @@ static inline wxString wxLogSysErrorHelper(long err) return wxString::Format(_(" (error %ld: %s)"), err, wxSysErrorMsg(err)); } -void WXDLLEXPORT wxVLogSysError(const wxString& format, va_list argptr) +void WXDLLIMPEXP_BASE wxVLogSysError(const wxString& format, va_list argptr) { wxVLogSysError(wxSysErrorCode(), format, argptr); } #if !wxUSE_UTF8_LOCALE_ONLY -void WXDLLEXPORT wxDoLogSysErrorWchar(const wxChar *format, ...) +void WXDLLIMPEXP_BASE wxDoLogSysErrorWchar(const wxChar *format, ...) { va_list argptr; va_start(argptr, format); @@ -401,7 +401,7 @@ void WXDLLEXPORT wxDoLogSysErrorWchar(const wxChar *format, ...) #endif // !wxUSE_UTF8_LOCALE_ONLY #if wxUSE_UNICODE_UTF8 -void WXDLLEXPORT wxDoLogSysErrorUtf8(const char *format, ...) +void WXDLLIMPEXP_BASE wxDoLogSysErrorUtf8(const char *format, ...) { va_list argptr; va_start(argptr, format); @@ -410,7 +410,7 @@ void WXDLLEXPORT wxDoLogSysErrorUtf8(const char *format, ...) } #endif // wxUSE_UNICODE_UTF8 -void WXDLLEXPORT wxVLogSysError(long err, const wxString& format, va_list argptr) +void WXDLLIMPEXP_BASE wxVLogSysError(long err, const wxString& format, va_list argptr) { if ( wxLog::IsEnabled() ) { wxLog::OnLog(wxLOG_Error, @@ -420,7 +420,7 @@ void WXDLLEXPORT wxVLogSysError(long err, const wxString& format, va_list argptr } #if !wxUSE_UTF8_LOCALE_ONLY -void WXDLLEXPORT wxDoLogSysErrorWchar(long lErrCode, const wxChar *format, ...) +void WXDLLIMPEXP_BASE wxDoLogSysErrorWchar(long lErrCode, const wxChar *format, ...) { va_list argptr; va_start(argptr, format); @@ -430,7 +430,7 @@ void WXDLLEXPORT wxDoLogSysErrorWchar(long lErrCode, const wxChar *format, ...) #endif // !wxUSE_UTF8_LOCALE_ONLY #if wxUSE_UNICODE_UTF8 -void WXDLLEXPORT wxDoLogSysErrorUtf8(long lErrCode, const char *format, ...) +void WXDLLIMPEXP_BASE wxDoLogSysErrorUtf8(long lErrCode, const char *format, ...) { va_list argptr; va_start(argptr, format); @@ -441,7 +441,7 @@ void WXDLLEXPORT wxDoLogSysErrorUtf8(long lErrCode, const char *format, ...) #ifdef __WATCOMC__ // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351 -void WXDLLEXPORT wxDoLogSysErrorWchar(unsigned long lErrCode, const wxChar *format, ...) +void WXDLLIMPEXP_BASE wxDoLogSysErrorWchar(unsigned long lErrCode, const wxChar *format, ...) { va_list argptr; va_start(argptr, format); @@ -449,7 +449,7 @@ void WXDLLEXPORT wxDoLogSysErrorWchar(unsigned long lErrCode, const wxChar *form va_end(argptr); } -void WXDLLEXPORT wxVLogSysError(unsigned long err, const wxString& format, va_list argptr) +void WXDLLIMPEXP_BASE wxVLogSysError(unsigned long err, const wxString& format, va_list argptr) { wxVLogSysError((long)err, format, argptr); } #endif // __WATCOMC__ @@ -457,13 +457,13 @@ void WXDLLEXPORT wxVLogSysError(unsigned long err, const wxString& format, va_li // wxLog class implementation // ---------------------------------------------------------------------------- -/* static */ -void wxLog::LogLastRepetitionCountIfNeeded() +unsigned wxLog::LogLastRepetitionCountIfNeeded() { wxCRIT_SECT_LOCKER(lock, ms_prevCS); - wxLog *pLogger = GetActiveTarget(); - if ( pLogger && ms_prevCounter ) + const unsigned count = ms_prevCounter; + + if ( ms_prevCounter ) { wxString msg; #if wxUSE_INTL @@ -477,8 +477,10 @@ void wxLog::LogLastRepetitionCountIfNeeded() #endif ms_prevCounter = 0; ms_prevString.clear(); - pLogger->DoLog(ms_prevLevel, msg, ms_prevTimeStamp); + DoLog(ms_prevLevel, msg, ms_prevTimeStamp); } + + return count; } wxLog::~wxLog() @@ -507,7 +509,7 @@ void wxLog::OnLog(wxLogLevel level, const wxString& szString, time_t t) return; } - LogLastRepetitionCountIfNeeded(); + pLogger->LogLastRepetitionCountIfNeeded(); // reset repetition counter for a new message ms_prevString = szString; @@ -904,6 +906,9 @@ wxLogInterposerTemp::wxLogInterposerTemp() // static variables // ---------------------------------------------------------------------------- +#if wxUSE_THREADS +wxCriticalSection wxLog::ms_prevCS; +#endif // wxUSE_THREADS bool wxLog::ms_bRepetCounting = false; wxString wxLog::ms_prevString; unsigned int wxLog::ms_prevCounter = 0;