X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glfps.c;h=dca09dda5abb3e9a5fdf3e03c106ac25e0e30cbd;hb=1ed37d8858a14c160cbd04ef6e38b0acade66a76;hp=a23dd2098d22289d61c2f9351194751d6c7fa556;hpb=b308db9a0f6de6b3ee6cf15c9a28bb7bcab590dc;p=glfps diff --git a/glfps.c b/glfps.c index a23dd20..dca09dd 100644 --- a/glfps.c +++ b/glfps.c @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -10,6 +11,8 @@ #include #include +#include + /* How many frames between reports. */ #define REPORT_FREQ 60 @@ -38,40 +41,7 @@ on_each_frame (void) void glXSwapBuffers (Display *dpy, GLXDrawable drawable) { - static typeof(&glXSwapBuffers) real_glXSwapBuffers = NULL; - - if (real_glXSwapBuffers == NULL) - real_glXSwapBuffers = dlsym (RTLD_NEXT, "glXSwapBuffers"); - on_each_frame (); - real_glXSwapBuffers (dpy, drawable); -} - -void -(*glXGetProcAddressARB (const GLubyte *func))(void) -{ - static typeof(&glXGetProcAddressARB) real_glXGetProcAddressARB = NULL; - - if (strcmp((char *) func, "glXSwapBuffers") == 0) - return (void*) glXSwapBuffers; - - if (real_glXGetProcAddressARB == NULL) - real_glXGetProcAddressARB = dlsym (RTLD_NEXT, "glXGetProcAddressARB"); - - return real_glXGetProcAddressARB (func); -} - -void -(*glXGetProcAddress (const GLubyte *func))(void) -{ - static typeof(&glXGetProcAddress) real_glXGetProcAddress = NULL; - - if (strcmp((char *) func, "glXSwapBuffers") == 0) - return (void*) glXSwapBuffers; - - if (real_glXGetProcAddress == NULL) - real_glXGetProcAddress = dlsym (RTLD_NEXT, "glXGetProcAddress"); - - return real_glXGetProcAddress (func); + GLAZE_DEFER (glXSwapBuffers, dpy, drawable); }