]> git.cworth.org Git - fips/blobdiff - glwrap.c
Avoid trying to start a timer query within glBegin/glEnd
[fips] / glwrap.c
index beb1c97fd38cb05830e6ce1f37b9680c872804bc..a90ef8c4707b9f67f13de51495534aa6d6d5258a 100644 (file)
--- a/glwrap.c
+++ b/glwrap.c
@@ -332,10 +332,30 @@ glClear (GLbitfield mask)
        TIMED_DEFER (glClear, mask);
 }
 
+/* We can't just use TIMED_DEFER for glBegin/glEnd since the
+ * glBeginQuery/glEndQuery calls must both be outside
+ * glBegin/glEnd. */
+void
+glBegin (GLenum mode)
+{
+       if (! inside_new_list)
+       {
+               unsigned counter;
+               counter = metrics_add_counter ();
+               glBeginQuery (GL_TIME_ELAPSED, counter);
+       }
+
+       GLWRAP_DEFER (glBegin, mode);
+}
+
 void
 glEnd (void)
 {
-       TIMED_DEFER (glEnd,);
+       GLWRAP_DEFER (glEnd);
+
+       if (! inside_new_list) {
+               glEndQuery (GL_TIME_ELAPSED);
+       }
 }
 
 void