X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d7526b0b8383fbe98dfd60b5003cff1c0cfe8d8..1d8cdcf2e39810b8e6128ac8a504cc206068f58c:/src/common/log.cpp?ds=sidebyside diff --git a/src/common/log.cpp b/src/common/log.cpp index e0e0c03eea..98d73a6dde 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -68,10 +68,6 @@ #undef wxLOG_COMPONENT const char *wxLOG_COMPONENT = ""; -#if wxUSE_THREADS - -wxTLS_TYPE(wxThreadSpecificInfo) wxThreadInfoVar; - // this macro allows to define an object which will be initialized before any // other function in this file is called: this is necessary to allow log // functions to be used during static initialization (this is not advisable @@ -92,6 +88,10 @@ wxTLS_TYPE(wxThreadSpecificInfo) wxThreadInfoVar; \ type *gs_##name##Ptr = &Get##name() +#if wxUSE_THREADS + +wxTLS_TYPE(wxThreadSpecificInfo) wxThreadInfoVar; + namespace { @@ -109,7 +109,7 @@ WX_DEFINE_LOG_CS(BackgroundLog); // this one is used for protecting ms_aTraceMasks from concurrent access WX_DEFINE_LOG_CS(TraceMask); -// and this one is used for GetComponentLevels() +// and this one is used for GetComponentLevels() WX_DEFINE_LOG_CS(Levels); } // anonymous namespace @@ -165,6 +165,25 @@ PreviousLogInfo gs_prevLog; // NB: all accesses to it must be protected by GetLevelsCS() critical section WX_DEFINE_GLOBAL_VAR(wxStringToNumHashMap, ComponentLevels); +// ---------------------------------------------------------------------------- +// wxLogOutputBest: wxLog wrapper around wxMessageOutputBest +// ---------------------------------------------------------------------------- + +class wxLogOutputBest : public wxLog +{ +public: + wxLogOutputBest() { } + +protected: + virtual void DoLogText(const wxString& msg) + { + wxMessageOutputBest().Output(msg); + } + +private: + wxDECLARE_NO_COPY_CLASS(wxLogOutputBest); +}; + } // anonymous namespace // ============================================================================ @@ -331,9 +350,7 @@ wxLog::CallDoLogNow(wxLogLevel level, wxUIntPtr num = 0; if ( info.GetNumValue(wxLOG_KEY_SYS_ERROR_CODE, &num) ) { - long err = static_cast(num); - if ( !err ) - err = wxSysErrorCode(); + const long err = static_cast(num); suffix.Printf(_(" (error %ld: %s)"), err, wxSysErrorMsg(err)); } @@ -362,7 +379,9 @@ void wxLog::DoLogRecord(wxLogLevel level, // but to call both of them DoLog(level, (const char*)msg.mb_str(), info.timestamp); DoLog(level, (const wchar_t*)msg.wc_str(), info.timestamp); -#endif // WXWIN_COMPATIBILITY_2_8 +#else // !WXWIN_COMPATIBILITY_2_8 + wxUnusedVar(info); +#endif // WXWIN_COMPATIBILITY_2_8/!WXWIN_COMPATIBILITY_2_8 // TODO: it would be better to extract message formatting in a separate @@ -481,7 +500,7 @@ wxLog *wxLog::GetMainThreadActiveTarget() if ( wxTheApp != NULL ) ms_pLogger = wxTheApp->GetTraits()->CreateLogTarget(); else - ms_pLogger = new wxLogStderr; + ms_pLogger = new wxLogOutputBest; s_bInGetActiveTarget = false;