* THE SOFTWARE.
*/
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <string.h>
-
-#include <dlfcn.h>
+#include "fips.h"
#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
-#include <GL/glext.h>
-
-#include <sys/time.h>
#include "dlwrap.h"
+#include "glwrap.h"
+
typedef void (* fips_glXSwapBuffers_t)(Display *dpy, GLXDrawable drawable);
static void *
void
glXSwapBuffers (Display *dpy, GLXDrawable drawable)
{
- static int initialized = 0;
- static int frames;
- static struct timeval tv_start, tv_now;
-
- if (! initialized) {
- frames = 0;
- gettimeofday (&tv_start, NULL);
- initialized = 1;
- }
-
call_glXSwapBuffers (dpy, drawable);
- frames++;
- if (frames % 60 == 0) {
- double fps;
- gettimeofday (&tv_now, NULL);
-
- fps = (double) frames / (tv_now.tv_sec - tv_start.tv_sec +
- (tv_now.tv_usec - tv_start.tv_usec) / 1.0e6);
-
- printf("FPS: %.3f\n", fps);
- }
+ glwrap_end_frame ();
}
__GLXextFuncPtr
glXGetProcAddressARB (const GLubyte *func)
{
+ __GLXextFuncPtr ptr;
static fips_glXGetProcAddressARB_t real_glXGetProcAddressARB = NULL;
const char *name = "glXGetProcAddressARB";
}
}
- if (strcmp ((const char *)func, "glXSwapBuffers") == 0)
- return (__GLXextFuncPtr) glXSwapBuffers;
- else
- return real_glXGetProcAddressARB (func);
+ /* If our library has this symbol, that's what we want to give. */
+ ptr = dlwrap_real_dlsym (NULL, (const char *) func);
+ if (ptr)
+ return ptr;
+
+ /* Otherwise, just defer to the real glXGetProcAddressARB. */
+ return real_glXGetProcAddressARB (func);
}