#include <EGL/egl.h>
+#include "context.h"
+#include "eglwrap.h"
#include "dlwrap.h"
#include "metrics.h"
} while (0);
-static void *
+/* Note: We only need to perform a lookup in libEGL.so.1, (not
+ * libGLESv2.so.2). This is because the functions we wrap, (currently
+ * eglSwapBufers, eglGetProcAddress, and eglMakeCurrent), exist only
+ * in libEGL.so.1.
+ */
+void *
eglwrap_lookup (char *name)
{
const char *libegl_filename = "libEGL.so.1";
EGLBoolean ret;
EGLWRAP_DEFER_WITH_RETURN (ret, eglSwapBuffers, dpy, surface);
+
+ metrics_counter_stop ();
+
metrics_end_frame ();
+ metrics_counter_start ();
+
+ return ret;
+}
+
+void (*eglGetProcAddress (char const *func))(void)
+{
+ void *ret;
+
+ /* If our library has this symbol, that's what we want to give. */
+ ret = dlwrap_real_dlsym (NULL, (const char *) func);
+ if (ret)
+ return ret;
+
+ /* Otherwise, just defer to the real eglGetProcAddress */
+ EGLWRAP_DEFER_WITH_RETURN (ret, eglGetProcAddress, func);
+
return ret;
}
{
EGLBoolean ret;
- fips_dispatch_init (FIPS_API_EGL);
+ context_leave ();
EGLWRAP_DEFER_WITH_RETURN (ret, eglMakeCurrent, display, draw, read, context);
+ context_enter (FIPS_API_EGL, context);
+
return ret;
}