]> git.cworth.org Git - apitrace/blobdiff - retrace/glretrace_main.cpp
glretrace: Flush outstanding requests when waiting for user input.
[apitrace] / retrace / glretrace_main.cpp
index 1591287c22d9d254507dba27a23c5245a5e83d20..d215133cbff906ff3c6e912bb574ee834dfc8a7d 100755 (executable)
@@ -178,7 +178,9 @@ completeCallQuery(CallQuery& query) {
     }
 
     if (retrace::profilingCpuTimes) {
-        cpuDuration = query.cpuEnd - query.cpuStart;
+        double cpuTimeScale = 1.0E9 / getTimeFrequency();
+        cpuDuration = (query.cpuEnd - query.cpuStart) * cpuTimeScale;
+        query.cpuStart *= cpuTimeScale;
     }
 
     if (retrace::profilingMemoryUsage) {
@@ -318,7 +320,8 @@ initContext() {
     /* Sync the gpu and cpu start times */
     if (retrace::profilingCpuTimes || retrace::profilingGpuTimes) {
         if (!retrace::profiler.hasBaseTimes()) {
-            GLint64 currentTime = getCurrentTime();
+            double cpuTimeScale = 1.0E9 / getTimeFrequency();
+            GLint64 currentTime = getCurrentTime() * cpuTimeScale;
             retrace::profiler.setBaseCpuTime(currentTime);
             retrace::profiler.setBaseGpuTime(currentTime);
         }
@@ -476,6 +479,11 @@ retrace::flushRendering(void) {
 
 void
 retrace::waitForInput(void) {
+    glretrace::Context *currentContext = glretrace::getCurrentContext();
+    if (currentContext) {
+        glretrace::flushQueries();
+        glFlush();
+    }
     while (glws::processEvents()) {
         os::sleep(100*1000);
     }