Index: trunk/src/core/logger.cc
===================================================================
--- trunk/src/core/logger.cc	(revision 372)
+++ trunk/src/core/logger.cc	(revision 376)
@@ -8,5 +8,5 @@
 #include "nv/core/time.hh"
 #include <cstdio>
-#if NV_PLATFORM == NV_WINDOWS
+#if NV_COMPILER == NV_MSVC 
 #define WIN32_LEAN_AND_MEAN
 #include <Windows.h>
@@ -51,5 +51,5 @@
 #define NV_LOG_LEVEL_NAME_PAD(level) (log_level_names_pad[ (level) / 10 ])
 
-#if NV_PLATFORM == NV_WINDOWS 
+#if NV_COMPILER == NV_MSVC 
 static unsigned short log_color[] =
 {
@@ -145,5 +145,5 @@
 	size_t ssize = timestamp( stamp );
 
-#if NV_PLATFORM == NV_WINDOWS 
+#if NV_COMPILER == NV_MSVC 
 	if ( m_color ) SetConsoleTextAttribute( m_handle, FOREGROUND_INTENSITY );
 	WriteConsole( m_handle, stamp, ssize, nullptr, nullptr );
@@ -170,5 +170,5 @@
 	else
 		fwrite( "] ", 2, 1, stdout );
-	fwrite( stamp.data(), stamp.size(), 1, stdout );
+	fwrite( message.data(), message.size(), 1, stdout );
 	fwrite( "\n", 1, 1, stdout );
 #endif
@@ -233,5 +233,5 @@
 	: m_color( coloring )
 {
-#if NV_PLATFORM == NV_WINDOWS 
+#if NV_COMPILER == NV_MSVC 
 	m_handle = GetStdHandle( STD_OUTPUT_HANDLE );
 #else
@@ -240,5 +240,5 @@
 }
 
-size_t nv::log_sink::timestamp( char* buffer ) const
+nv::size_t nv::log_sink::timestamp( char* buffer ) const
 {
 	uint32 ms = get_system_ms();
@@ -248,5 +248,5 @@
 	unsigned int m    = (unsigned int)(secs / 60) % 60;
 	unsigned int s    = secs % 60;
-#if NV_PLATFORM == NV_WINDOWS 
+#if NV_COMPILER == NV_MSVC 
 	sprintf_s( buffer, 16, "%02d:%02d:%02d.%02d", h, m, s, mm );
 #else
Index: trunk/src/core/profiler.cc
===================================================================
--- trunk/src/core/profiler.cc	(revision 372)
+++ trunk/src/core/profiler.cc	(revision 376)
@@ -12,5 +12,5 @@
 using namespace nv;
 
-#ifdef NV_MSVC
+#if NV_COMPILER == NV_MSVC
 #define snprintf sprintf_s
 #endif
Index: trunk/src/core/time.cc
===================================================================
--- trunk/src/core/time.cc	(revision 372)
+++ trunk/src/core/time.cc	(revision 376)
@@ -7,4 +7,6 @@
 #include "nv/core/logging.hh"
 
+#include <ctime>
+
 #if NV_COMPILER == NV_MSVC
 #define WIN32_LEAN_AND_MEAN 
@@ -13,9 +15,18 @@
 #pragma intrinsic(__rdtsc)
 #else
-#include <unistd.h>
+#if NV_COMPILER == NV_GNUC && NV_PLATFORM == NV_WINDOWS
+// mingw doesn't have usleep nor nanosleep...
+#include <windows.h>
+#endif
+// #include <unistd.h>
+// #include <time.h>
+// #include <sys/time.h>
+// #include <sys/types.h>
+#include <stdio.h> 
+#include <time.h> 
 #include <sys/time.h>
 #endif
 
-#include <ctime>
+
 
 struct timer_impl
@@ -58,5 +69,13 @@
 	Sleep( ms );
 #else
-	usleep( ms * 1000 );
+#if NV_COMPILER == NV_GNUC && NV_PLATFORM == NV_WINDOWS
+	Sleep( ms );
+#else
+	struct timespec ts;
+	ts.tv_sec = 0;
+	ts.tv_nsec = ms * 1000000;
+	nanosleep(&ts, NULL);
+//	usleep( ms * 1000 );
+#endif
 #endif
 }
