]> git.cworth.org Git - apitrace/blobdiff - os_win32.cpp
Various changes to the flushing code.
[apitrace] / os_win32.cpp
index 57a7fbca452bf3090766870098b3861629fefcb6..90ce8d3a74a41a5a660cc71547d27898d0d834e1 100644 (file)
@@ -24,6 +24,7 @@
  **************************************************************************/
 
 #include <windows.h>
+#include <signal.h>
 #include <string.h>
 #include <stdio.h>
 
@@ -99,18 +100,25 @@ DebugMessage(const char *format, ...)
     va_end(ap);
 
     OutputDebugStringA(buf);
+
+    /*
+     * Also write the message to stderr, when a debugger is not present (to
+     * avoid duplicate messages in command line debuggers).
+     */
+#if _WIN32_WINNT > 0x0400
     if (!IsDebuggerPresent()) {
         fflush(stdout);
         fputs(buf, stderr);
         fflush(stderr);
     }
+#endif
 }
 
 long long GetTime(void)
 {
     static LARGE_INTEGER frequency;
     LARGE_INTEGER counter;
-    if(!frequency.QuadPart)
+    if (!frequency.QuadPart)
         QueryPerformanceFrequency(&frequency);
     QueryPerformanceCounter(&counter);
     return counter.QuadPart*1000000LL/frequency.QuadPart;
@@ -126,4 +134,13 @@ Abort(void)
 #endif
 }
 
+void
+CatchInterrupts(void (*func)(int))
+{
+    signal(SIGINT, func);
+    signal(SIGHUP, func);
+    signal(SIGTERM, func);
+}
+
+
 } /* namespace OS */