From: Vadim Zeitlin Date: Thu, 17 May 2001 10:11:34 +0000 (+0000) Subject: added wxLog::ClearTraceMasks() X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/36bd690299dc72d49c4a945fa467ac7ce2342019 added wxLog::ClearTraceMasks() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10192 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/docs/latex/wx/log.tex b/docs/latex/wx/log.tex index 03c4fa98bc..7de410ebbd 100644 --- a/docs/latex/wx/log.tex +++ b/docs/latex/wx/log.tex @@ -30,8 +30,9 @@ No base class The functions in this section work with and manipulate the active log target. The {\it OnLog()} is called by the {\it wxLogXXX()} functions and invokes the {\it DoLog()} of the active log target if any. Get/Set methods are used to -install/query the current active target and, finally, {\it -DontCreateOnDemand()} disables the automatic creation of a standard log target +install/query the current active target and, finally, +\helpref{DontCreateOnDemand()}{wxlogdontcreateondemand} +disables the automatic creation of a standard log target if none actually exists. It is only useful when the application is terminating and shouldn't be used in other situations because it may easily lead to a loss of messages. @@ -123,6 +124,7 @@ window on the corresponding error message. If you wish to enable it, please use \helpref{AddTraceMask}{wxlogaddtracemask}\\ \helpref{RemoveTraceMask}{wxlogremovetracemask}\\ +\helpref{ClearTraceMasks}{wxlogcleartracemasks}\\ \helpref{IsAllowedTraceMask}{wxlogisallowedtracemask}\\ \helpref{SetVerbose}{wxlogsetverbose}\\ \helpref{GetVerbose}{wxloggetverbose}\\ @@ -147,6 +149,15 @@ Add the {\it mask} to the list of allowed masks for See also: \helpref{RemoveTraceMask}{wxlogremovetracemask} +\membersection{wxLog::ClearTraceMasks}\label{wxlogcleartracemasks} + +\func{static void}{ClearTraceMasks}{\void} + +Removes all trace masks previously set with +\helpref{AddTraceMask}{wxlogaddtracemask}. + +See also: \helpref{RemoveTraceMask}{wxlogremovetracemask} + \membersection{wxLog::OnLog}\label{wxlogonlog} \func{static void}{OnLog}{\param{wxLogLevel }{ level}, \param{const char * }{ message}} @@ -172,7 +183,11 @@ previous active log target (may be NULL). \func{static void}{DontCreateOnDemand}{\void} Instructs wxLog to not create new log targets on the fly if there is none -currently. (Almost) for internal use only. +currently. (Almost) for internal use only: it is supposed to be called by the +application shutdown code. + +Note that this function also calls +\helpref{ClearTraceMasks}{wxlogcleartracemasks}. \membersection{wxLog::Flush}\label{wxlogflush} diff --git a/include/wx/log.h b/include/wx/log.h index 6c2e4cdd51..43fae9c89e 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -161,7 +161,7 @@ public: void SetVerbose(bool bVerbose = TRUE) { m_bVerbose = bVerbose; } // should GetActiveTarget() try to create a new log object if the // current is NULL? - static void DontCreateOnDemand() { ms_bAutoCreate = FALSE; } + static void DontCreateOnDemand(); // trace mask (see wxTraceXXX constants for details) static void SetTraceMask(wxTraceMask ulMask) { ms_ulTraceMask = ulMask; } @@ -169,6 +169,8 @@ public: static void AddTraceMask(const wxString& str) { ms_aTraceMasks.Add(str); } // add string trace mask static void RemoveTraceMask(const wxString& str); + // remove all string trace masks + static void ClearTraceMasks(); // sets the timestamp string: this is used as strftime() format string // for the log targets which add time stamps to the messages - set it diff --git a/src/common/log.cpp b/src/common/log.cpp index 1ec43bfa0a..a60e289df5 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -323,6 +323,16 @@ wxLog *wxLog::SetActiveTarget(wxLog *pLogger) return pOldLogger; } +void wxLog::DontCreateOnDemand() +{ + ms_bAutoCreate = FALSE; + + // this is usually called at the end of the program and we assume that it + // is *always* called at the end - so we free memory here to avoid false + // memory leak reports from wxWin memory tracking code + ClearTraceMasks(); +} + void wxLog::RemoveTraceMask(const wxString& str) { int index = ms_aTraceMasks.Index(str); @@ -330,6 +340,11 @@ void wxLog::RemoveTraceMask(const wxString& str) ms_aTraceMasks.Remove((size_t)index); } +void wxLog::ClearTraceMasks() +{ + ms_aTraceMasks.Clear(); +} + void wxLog::TimeStamp(wxString *str) { if ( ms_timestamp )