]> git.saurik.com Git - wxWidgets.git/commitdiff
use LogLastRepetitionCountIfNeeded() instead of DoLogNumberOfRepeats() in logg.cpp too
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 24 Oct 2007 22:19:28 +0000 (22:19 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 24 Oct 2007 22:19:28 +0000 (22:19 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/log.h
src/common/log.cpp
src/generic/logg.cpp

index bff6f448c3d667a20b5cd2533010e2dc48f18eb2..98dbd4938bde3b6a278058662748e5b8ea407daf 100644 (file)
@@ -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
index 9ca1c34bd7332d777acaef2053d46f5a2f9908ff..a3214b86307dd546eb8b609cc4725ee215b66272 100644 (file)
@@ -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;
index 4582c3b07e994750419cb394babc390a98071ec4..bd345d856fcea1fc8cd7e830fadc6d083d7c411d 100644 (file)
@@ -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);