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.
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