removed wxLog::HasPendingMessages() (it can't be made to work correctly with wxLogChain); don't send the messages going to a log file to debug output under MSW

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18675 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-01-10 23:47:14 +00:00
parent 6dd16e4f26
commit 1ec5cbf3de
4 changed files with 24 additions and 31 deletions

View File

@@ -72,15 +72,12 @@ night in the current time zone).
There also functions to support message buffering. Why are they needed? There also functions to support message buffering. Why are they needed?
Some of wxLog implementations, most notably the standard wxLogGui class, Some of wxLog implementations, most notably the standard wxLogGui class,
buffer the messages (for example, to avoid showing the user a zillion of modal buffer the messages (for example, to avoid showing the user a zillion of modal
message boxes one after another - which would be really annoying). message boxes one after another -- which would be really annoying).
\helpref{Flush()}{wxlogflush} shows them all and clears the buffer contents. \helpref{Flush()}{wxlogflush} shows them all and clears the buffer contents.
Although this function doesn't do anything if the buffer is already empty, This function doesn't do anything if the buffer is already empty.
\helpref{HasPendingMessages()}{wxloghaspendingmessages} is also provided which
allows to explicitly verify it.
\helpref{Flush}{wxlogflush}\\ \helpref{Flush}{wxlogflush}\\
\helpref{FlushActive}{wxlogflushactive}\\ \helpref{FlushActive}{wxlogflushactive}
\helpref{HasPendingMessages}{wxloghaspendingmessages}
\membersection{Customization}\label{wxlogcustomization} \membersection{Customization}\label{wxlogcustomization}
@@ -294,13 +291,6 @@ See also:
\helpref{Flush}{wxlogflush} \helpref{Flush}{wxlogflush}
\membersection{wxLog::HasPendingMessages}\label{wxloghaspendingmessages}
\constfunc{bool}{HasPendingMessages}{\void}
Returns true if there are any messages in the buffer (not yet shown to the
user). (Almost) for internal use only.
\membersection{wxLog::SetVerbose}\label{wxlogsetverbose} \membersection{wxLog::SetVerbose}\label{wxlogsetverbose}
\func{static void}{SetVerbose}{\param{bool }{ verbose = TRUE}} \func{static void}{SetVerbose}{\param{bool }{ verbose = TRUE}}

View File

@@ -143,22 +143,19 @@ public:
// and iostream logs don't need it, but wxGuiLog does to avoid showing // and iostream logs don't need it, but wxGuiLog does to avoid showing
// 17 modal dialogs one after another) // 17 modal dialogs one after another)
virtual void Flush(); virtual void Flush();
// call to Flush() may be optimized: call it only if this function
// returns true (although Flush() also returns immediately if there is
// no messages, this functions is more efficient because inline)
bool HasPendingMessages() const { return m_bHasMessages; }
// only one sink is active at each moment
// flush the active target if any // flush the active target if any
static void FlushActive() static void FlushActive()
{ {
if ( !ms_suspendCount ) if ( !ms_suspendCount )
{ {
wxLog *log = GetActiveTarget(); wxLog *log = GetActiveTarget();
if ( log && log->HasPendingMessages() ) if ( log )
log->Flush(); log->Flush();
} }
} }
// only one sink is active at each moment
// get current log target, will call wxApp::CreateLogTarget() to // get current log target, will call wxApp::CreateLogTarget() to
// create one if none exists // create one if none exists
static wxLog *GetActiveTarget(); static wxLog *GetActiveTarget();
@@ -224,9 +221,11 @@ public:
// make dtor virtual for all derived classes // make dtor virtual for all derived classes
virtual ~wxLog() { } virtual ~wxLog() { }
protected:
bool m_bHasMessages; // any messages in the queue?
// this method exists for backwards compatibility only, don't use
bool HasPendingMessages() const { return true; }
protected:
// the logging functions that can be overriden // the logging functions that can be overriden
// default DoLog() prepends the time stamp and a prefix corresponding // default DoLog() prepends the time stamp and a prefix corresponding
// to the message to szString and then passes it to DoLogString() // to the message to szString and then passes it to DoLogString()
@@ -433,7 +432,9 @@ protected:
wxArrayInt m_aSeverity; // one of wxLOG_XXX values wxArrayInt m_aSeverity; // one of wxLOG_XXX values
wxArrayLong m_aTimes; // the time of each message wxArrayLong m_aTimes; // the time of each message
bool m_bErrors, // do we have any errors? bool m_bErrors, // do we have any errors?
m_bWarnings; // any warnings? m_bWarnings, // any warnings?
m_bHasMessages; // any messages at all?
}; };
#endif // wxUSE_LOGGUI #endif // wxUSE_LOGGUI

View File

@@ -351,7 +351,6 @@ void WXDLLEXPORT wxLogSysError(long lErrCode, const wxChar *szFormat, ...)
wxLog::wxLog() wxLog::wxLog()
{ {
m_bHasMessages = FALSE;
} }
wxChar *wxLog::SetLogBuffer( wxChar *buf, size_t size) wxChar *wxLog::SetLogBuffer( wxChar *buf, size_t size)
@@ -493,8 +492,7 @@ void wxLog::DoLogString(const wxChar *WXUNUSED(szString), time_t WXUNUSED(t))
void wxLog::Flush() void wxLog::Flush()
{ {
// remember that we don't have any more messages to show // nothing to do here
m_bHasMessages = FALSE;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -706,11 +704,17 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t))
fflush(m_fp); fflush(m_fp);
// under Windows, programs usually don't have stderr at all, so show the // under Windows, programs usually don't have stderr at all, so show the
// messages also under debugger - unless it's a console program // messages also under debugger (unless it's a console program which does
// have stderr or unless this is a file logger which doesn't use stderr at
// all)
#if defined(__WXMSW__) && wxUSE_GUI && !defined(__WXMICROWIN__) #if defined(__WXMSW__) && wxUSE_GUI && !defined(__WXMICROWIN__)
str += wxT("\r\n") ; if ( m_fp == stderr )
OutputDebugString(str.c_str()); {
str += wxT("\r\n") ;
OutputDebugString(str.c_str());
}
#endif // MSW #endif // MSW
#if defined(__WXMAC__) && !defined(__DARWIN__) && wxUSE_GUI #if defined(__WXMAC__) && !defined(__DARWIN__) && wxUSE_GUI
Str255 pstr ; Str255 pstr ;
strcpy( (char*) pstr , str.c_str() ) ; strcpy( (char*) pstr , str.c_str() ) ;
@@ -793,7 +797,7 @@ void wxLogChain::Flush()
if ( m_logOld ) if ( m_logOld )
m_logOld->Flush(); m_logOld->Flush();
// be careful to avoid inifinite recursion // be careful to avoid infinite recursion
if ( m_logNew && m_logNew != this ) if ( m_logNew && m_logNew != this )
m_logNew->Flush(); m_logNew->Flush();
} }

View File

@@ -620,8 +620,6 @@ void wxLogWindow::DoLog(wxLogLevel level, const wxChar *szString, time_t t)
wxLog::DoLog(level, szString, t); wxLog::DoLog(level, szString, t);
} }
} }
m_bHasMessages = TRUE;
} }
void wxLogWindow::DoLogString(const wxChar *szString, time_t WXUNUSED(t)) void wxLogWindow::DoLogString(const wxChar *szString, time_t WXUNUSED(t))