]> git.cworth.org Git - fips/blobdiff - glxwrap.c
Fix buffer overrun in accumulate_program_metrics
[fips] / glxwrap.c
index 59d3e8eb35cdd9818b6f1d5678133f00a5d90a9f..14b79b7b3b1e09dc79e65e0acaf72db212d5d133 100644 (file)
--- a/glxwrap.c
+++ b/glxwrap.c
@@ -36,7 +36,11 @@ glXSwapBuffers (Display *dpy, GLXDrawable drawable)
 {
        GLWRAP_DEFER (glXSwapBuffers, dpy, drawable);
 
+       metrics_counter_stop ();
+
        metrics_end_frame ();
+
+       metrics_counter_start ();
 }
 
 /* glXGetProcAddressARB is a function which accepts a string and
@@ -80,10 +84,17 @@ glXMakeCurrent (Display *dpy, GLXDrawable drawable, GLXContext ctx)
 {
        Bool ret;
 
+       metrics_info_fini ();
+
        fips_dispatch_init (FIPS_API_GLX);
 
        GLWRAP_DEFER_WITH_RETURN (ret, glXMakeCurrent, dpy, drawable, ctx);
 
+       metrics_info_init ();
+
+       metrics_set_current_op (METRICS_OP_SHADER + 0);
+       metrics_counter_start ();
+
        return ret;
 }
 
@@ -92,9 +103,16 @@ glXMakeContextCurrent (Display *dpy, GLXDrawable drawable, GLXDrawable read, GLX
 {
        Bool ret;
 
+       metrics_info_fini ();
+
        fips_dispatch_init (FIPS_API_GLX);
 
        GLWRAP_DEFER_WITH_RETURN (ret, glXMakeContextCurrent, dpy, drawable, read, ctx);
 
+       metrics_info_init ();
+
+       metrics_set_current_op (METRICS_OP_SHADER + 0);
+       metrics_counter_start ();
+
        return ret;
 }