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?
Some of wxLog implementations, most notably the standard wxLogGui class,
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.
Although this function doesn't do anything if the buffer is already empty,
\helpref{HasPendingMessages()}{wxloghaspendingmessages} is also provided which
allows to explicitly verify it.
This function doesn't do anything if the buffer is already empty.
\helpref{Flush}{wxlogflush}\\
\helpref{FlushActive}{wxlogflushactive}\\
\helpref{HasPendingMessages}{wxloghaspendingmessages}
\helpref{FlushActive}{wxlogflushactive}
\membersection{Customization}\label{wxlogcustomization}
@@ -294,13 +291,6 @@ See also:
\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}
\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
// 17 modal dialogs one after another)
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
static void FlushActive()
{
if ( !ms_suspendCount )
{
wxLog *log = GetActiveTarget();
if ( log && log->HasPendingMessages() )
if ( log )
log->Flush();
}
}
// only one sink is active at each moment
// get current log target, will call wxApp::CreateLogTarget() to
// create one if none exists
static wxLog *GetActiveTarget();
@@ -224,9 +221,11 @@ public:
// make dtor virtual for all derived classes
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
// default DoLog() prepends the time stamp and a prefix corresponding
// to the message to szString and then passes it to DoLogString()
@@ -433,7 +432,9 @@ protected:
wxArrayInt m_aSeverity; // one of wxLOG_XXX values
wxArrayLong m_aTimes; // the time of each message
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

View File

@@ -351,7 +351,6 @@ void WXDLLEXPORT wxLogSysError(long lErrCode, const wxChar *szFormat, ...)
wxLog::wxLog()
{
m_bHasMessages = FALSE;
}
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()
{
// remember that we don't have any more messages to show
m_bHasMessages = FALSE;
// nothing to do here
}
// ----------------------------------------------------------------------------
@@ -706,11 +704,17 @@ void wxLogStderr::DoLogString(const wxChar *szString, time_t WXUNUSED(t))
fflush(m_fp);
// 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 ( m_fp == stderr )
{
str += wxT("\r\n") ;
OutputDebugString(str.c_str());
}
#endif // MSW
#if defined(__WXMAC__) && !defined(__DARWIN__) && wxUSE_GUI
Str255 pstr ;
strcpy( (char*) pstr , str.c_str() ) ;
@@ -793,7 +797,7 @@ void wxLogChain::Flush()
if ( m_logOld )
m_logOld->Flush();
// be careful to avoid inifinite recursion
// be careful to avoid infinite recursion
if ( m_logNew && m_logNew != this )
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);
}
}
m_bHasMessages = TRUE;
}
void wxLogWindow::DoLogString(const wxChar *szString, time_t WXUNUSED(t))