]> git.cworth.org Git - apitrace/commitdiff
cli: Don't use the DLL injection method for OpenGL on Windows 8.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 10 Oct 2013 23:22:34 +0000 (16:22 -0700)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 10 Oct 2013 23:22:34 +0000 (16:22 -0700)
Works around issue #172.

cli/cli_trace.cpp

index 5903bdc5f7865cd7327a71b9b14f50d97a567e37..3e2b64427068bdf1d1921428d159c0969bdde058 100644 (file)
@@ -133,7 +133,26 @@ traceProgram(trace::API api,
     }
 
 #if defined(_WIN32)
-    useInject = true;
+    /*
+     * Use DLL injection method on Windows, even for APIs that don't stricly
+     * need it.  Except when tracing OpenGL on Windows 8, as the injection
+     * method seems to have troubles tracing the internal
+     * gdi32.dll!SwapBuffers -> opengl32.dll!wglSwapBuffer calls, per github
+     * issue #172.
+     */
+    {
+        OSVERSIONINFO osvi;
+        ZeroMemory(&osvi, sizeof osvi);
+        osvi.dwOSVersionInfoSize = sizeof osvi;
+        GetVersionEx(&osvi);
+        BOOL bIsWindows8orLater =
+            osvi.dwMajorVersion > 6 ||
+            (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion >= 2);
+        if (api != trace::API_GL || !bIsWindows8orLater) {
+            useInject = true;
+        }
+    }
+
     if (useInject) {
         args.push_back("inject");
         args.push_back(wrapperPath);