Allow to choose double buffer visual.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 25 Nov 2010 17:14:18 +0000 (17:14 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Thu, 25 Nov 2010 17:14:18 +0000 (17:14 +0000)
glretrace.py

index 606c052..0724cff 100644 (file)
@@ -46,6 +46,8 @@ if __name__ == '__main__':
     print '#include <GL/glew.h>'
     print '#include <GL/glut.h>'
     print
+    print 'static bool double_buffer = false;'
+    print
     api = glapi.glapi
     retracer = GlRetracer()
     retracer.retrace_api(glapi.glapi)
@@ -59,13 +61,20 @@ static void display(void) {
    Trace::Call *call;
 
    while ((call = parser.parse_call())) {
-      if (call->name == "glFlush" ||
-          call->name == "glXSwapBuffers" ||
-          call->name == "wglSwapBuffers") {
+      if (call->name == "glFlush") {
          glFlush();
          return;
       }
       
+      if (call->name == "glXSwapBuffers" ||
+          call->name == "wglSwapBuffers") {
+         if (double_buffer)
+            glutSwapBuffers();
+         else
+            glFlush();
+         return;
+      }
+      
       retrace_call(*call);
 
       if (call->name == "glBegin") {
@@ -124,18 +133,9 @@ static void idle(void) {
 
 int main(int argc, char **argv)
 {
-   glutInit(&argc, argv);
-   glutInitWindowPosition(0, 0);
-   glutInitWindowSize(800, 600);
-   glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_SINGLE);
-   glutCreateWindow(argv[0]);
-   glewInit();
 
-   glutDisplayFunc(&display);
-   glutIdleFunc(&idle);
-
-    int i;
-    for (i = 1; i < argc; ++i) {
+   int i;
+   for (i = 1; i < argc; ++i) {
       const char *arg = argv[i];
 
       if (arg[0] != '-') {
@@ -145,7 +145,9 @@ int main(int argc, char **argv)
       if (!strcmp(arg, "--")) {
          break;
       }
-      else if (!strcmp(arg, "-v")) {
+      else if (!strcmp(arg, "-db")) {
+         double_buffer = true;
+      } else if (!strcmp(arg, "-v")) {
          ++verbosity;
       } else {
          std::cerr << "error: unknown option " << arg << "\\n";
@@ -153,6 +155,20 @@ int main(int argc, char **argv)
       }
    }
 
+   glutInit(&argc, argv);
+   glutInitWindowPosition(0, 0);
+   glutInitWindowSize(800, 600);
+   glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | (double_buffer ? GLUT_DOUBLE : GLUT_SINGLE));
+   glutCreateWindow(argv[0]);
+   glewInit();
+
+   glutDisplayFunc(&display);
+   glutIdleFunc(&idle);
+
+   for (GLuint h = 0; h < 1024; ++h) {
+      __list_map[h] = h;
+   }
+
    for ( ; i < argc; ++i) {
       if (parser.open(argv[i])) {
          glutMainLoop();