]> git.mxchange.org Git - simgear.git/blobdiff - simgear/debug/logstream.cxx
From Benoit Laniel: replace SG threading constructs with those from OpenThreads
[simgear.git] / simgear / debug / logstream.cxx
index c47d4c8b35a2d050d50ebdf94f1c972deb81b26c..28afbd26c313b601e6e25282fe3478df10453c9c 100644 (file)
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 // Library General Public License for more details.
 //
-// You should have received a copy of the GNU Library General Public
-// License along with this library; if not, write to the
-// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-// Boston, MA  02111-1307, USA.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 // $Id$
 
+#include <iostream>
+
 #include "logstream.hxx"
 
-logstream *global_logstream = NULL;
+logstream *logstream::global_logstream = 0;
 
 bool            logbuf::logging_enabled = true;
+#ifdef _MSC_VER
+   bool         logbuf::has_console = true;
+#endif
 sgDebugClass    logbuf::logClass        = SG_NONE;
 sgDebugPriority logbuf::logPriority     = SG_INFO;
 streambuf*      logbuf::sbuf            = NULL;
@@ -88,3 +92,22 @@ logstream::setLogLevels( sgDebugClass c, sgDebugPriority p )
     logbuf::set_log_level( c, p );
 }
 
+void
+logstream::initGlobalLogstream()
+{
+    // Force initialization of cerr.
+    static std::ios_base::Init initializer;
+    // XXX Is the following still necessary?
+#ifdef __APPLE__
+    /**
+     * There appears to be a bug in the C++ runtime in Mac OS X that
+     * will crash if certain funtions are called (in this case
+     * cerr.rdbuf()) during static initialization of a class. This
+     * print statement is hack to kick the library in the pants so it
+     * won't crash when cerr.rdbuf() is first called -DW 
+     **/
+    std::cout << "Using Mac OS X hack for initializing C++ stdio..."
+              << std::endl;
+#endif
+    global_logstream = new logstream(std::cerr);
+}