From 5d7526b0b8383fbe98dfd60b5003cff1c0cfe8d8 Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Wed, 15 Jul 2009 12:36:09 +0000
Subject: [PATCH] fix log target auto creation broken by recent changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 include/wx/log.h   | 7 +++++++
 src/common/log.cpp | 8 +++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/wx/log.h b/include/wx/log.h
index 775fac228f..c7bbf0b2db 100644
--- a/include/wx/log.h
+++ b/include/wx/log.h
@@ -606,6 +606,13 @@ private:
     static bool EnableThreadLogging(bool enable = true);
 #endif // wxUSE_THREADS
 
+    // get the active log target for the main thread, auto-creating it if
+    // necessary
+    //
+    // this is called from GetActiveTarget() and OnLog() when they're called
+    // from the main thread
+    static wxLog *GetMainThreadActiveTarget();
+
     // called from OnLog() if it's called from the main thread or if we have a
     // (presumably MT-safe) thread-specific logger and by FlushThreadMessages()
     // when it plays back the buffered messages logged from the other threads
diff --git a/src/common/log.cpp b/src/common/log.cpp
index d3595d1234..e0e0c03eea 100644
--- a/src/common/log.cpp
+++ b/src/common/log.cpp
@@ -294,7 +294,7 @@ wxLog::OnLog(wxLogLevel level,
     else
 #endif // wxUSE_THREADS
     {
-        logger = ms_pLogger;
+        logger = GetMainThreadActiveTarget();
         if ( !logger )
             return;
     }
@@ -464,6 +464,12 @@ wxLog *wxLog::GetActiveTarget()
     }
 #endif // wxUSE_THREADS
 
+    return GetMainThreadActiveTarget();
+}
+
+/* static */
+wxLog *wxLog::GetMainThreadActiveTarget()
+{
     if ( ms_bAutoCreate && ms_pLogger == NULL ) {
         // prevent infinite recursion if someone calls wxLogXXX() from
         // wxApp::CreateLogTarget()
-- 
2.45.2