X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glwrap.h;h=6acf3fcdb98cc00c86f690d217a070ddc1d0a96e;hb=158a5862aeea9224fcd60c28b0bb19cb6b9f9381;hp=2dc18383c0c864e40e5b033ce67f2f209fe895dd;hpb=4ef9d74d4ff12afcc7e31bf13fe2a4993f06b987;p=fips diff --git a/glwrap.h b/glwrap.h index 2dc1838..6acf3fc 100644 --- a/glwrap.h +++ b/glwrap.h @@ -26,6 +26,10 @@ void * glwrap_lookup (char *name); +/* Register a dlopened handle to be used by glwrap. */ +void +glwrap_set_gl_handle (void *handle); + /* Defer to the real 'function' (from libGL.so) to do the real work. * The symbol is looked up once and cached in a static variable for * future uses. @@ -37,10 +41,12 @@ glwrap_lookup (char *name); real_ ## function(__VA_ARGS__); \ } while (0); -/* Should be called at the end of ever function wrapper for an OpenGL - * function that ends a frame, (glXSwapBuffers and similar). - */ -void -glwrap_end_frame (void); +/* As GLWRAP_DEFER, but also set 'ret' to the return value */ +#define GLWRAP_DEFER_WITH_RETURN(ret, function,...) do { \ + static typeof(&function) real_ ## function; \ + if (! real_ ## function) \ + real_ ## function = glwrap_lookup (#function); \ + (ret) = real_ ## function(__VA_ARGS__); \ +} while (0); #endif