From: Vadim Zeitlin Date: Wed, 24 Oct 2007 22:19:28 +0000 (+0000) Subject: use LogLastRepetitionCountIfNeeded() instead of DoLogNumberOfRepeats() in logg.cpp too X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0250efd6f46786c9152d305636dcbc4fdbeebecb?ds=inline use LogLastRepetitionCountIfNeeded() instead of DoLogNumberOfRepeats() in logg.cpp too git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/log.h b/include/wx/log.h index bff6f448c3..98dbd4938b 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -304,8 +304,9 @@ protected: #endif // log a message indicating the number of times the previous message was - // repeated; only does something if ms_prevCounter > 0 - static void LogLastRepetitionCountIfNeeded(); + // repeated if ms_prevCounter > 0, does nothing otherwise; return the old + // value of ms_prevCounter + static unsigned LogLastRepetitionCountIfNeeded(); private: // static variables diff --git a/src/common/log.cpp b/src/common/log.cpp index 9ca1c34bd7..a3214b8630 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -458,10 +458,12 @@ void WXDLLEXPORT wxVLogSysError(unsigned long err, const wxString& format, va_li // ---------------------------------------------------------------------------- /* static */ -void wxLog::LogLastRepetitionCountIfNeeded() +unsigned wxLog::LogLastRepetitionCountIfNeeded() { wxCRIT_SECT_LOCKER(lock, ms_prevCS); + const unsigned count = ms_prevCounter; + wxLog *pLogger = GetActiveTarget(); if ( pLogger && ms_prevCounter ) { @@ -479,6 +481,8 @@ void wxLog::LogLastRepetitionCountIfNeeded() ms_prevString.clear(); pLogger->DoLog(ms_prevLevel, msg, ms_prevTimeStamp); } + + return count; } wxLog::~wxLog() @@ -904,6 +908,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; diff --git a/src/generic/logg.cpp b/src/generic/logg.cpp index 4582c3b07e..bd345d856f 100644 --- a/src/generic/logg.cpp +++ b/src/generic/logg.cpp @@ -275,11 +275,7 @@ void wxLogGui::Flush() // do it right now to block any new calls to Flush() while we're here m_bHasMessages = false; - unsigned repeatCount = 0; - if ( wxLog::GetRepetitionCounting() ) - { - repeatCount = wxLog::DoLogNumberOfRepeats(); - } + const unsigned repeatCount = wxLog::LogLastRepetitionCountIfNeeded(); wxString appName = wxTheApp->GetAppDisplayName(); @@ -317,7 +313,11 @@ void wxLogGui::Flush() #if wxUSE_LOG_DIALOG if ( repeatCount > 0 ) - m_aMessages[nMsgCount-1] += wxString::Format(wxT(" (%s)"), m_aMessages[nMsgCount-2].c_str()); + { + m_aMessages[nMsgCount - 1] + << " (" << m_aMessages[nMsgCount - 2] << ")"; + } + wxLogDialog dlg(NULL, m_aMessages, m_aSeverity, m_aTimes, title, style);